Pokazywanie postów oznaczonych etykietą f#. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą f#. Pokaż wszystkie posty

sobota, 20 lutego 2010

Szablony w C++ - Fibonacci

Hej!

A jakby połączyć szablony z C++ z programowaniem funkcyjnym rodem z F#?

Niesamowity pomysł, spróbujmy zaimplementować liczby Fibonacciego z użyciem mechanizmy szablonów C++!

Wykorzystamy częściowe specjalizacje szablonów i technikę tzw. metaprogramowania, a nasz wynik zostanie wyliczony już w czasie kompilacji. Brzmi fajniej niż wektor elementów typu T, co?

czwartek, 7 stycznia 2010

F# - sortowanie przez scalanie

Większość P.T. Czytelników nie jest crazy na punkcie F#, ale ja się nie poddaje :P

W końcu rozwiązanie ostatniego ćwiczenia z http://wojtek-m.blogspot.com/2009/10/f-i-gimnastyka-umysu.html ;)

*3. Sortowanie listy przez scalanie (merge sort). Pamiętaj o złożoności O(nlogn) i stabilności. Pierwszym argumentem sortowania powinna być funkcja porównująca, np. dla int byłaby to funkcja (<).

wtorek, 24 listopada 2009

F# - wyniki gimnastyki

Ok, rozwiązań do F-szarpowych ćwiczeń z posta http://wojtek-m.blogspot.com/2009/10/f-i-gimnastyka-umysu.html nikt nie umieścił, więc pora na mnie :P

1. Własna funkcja zwracająca długość listy (rekurencja ogonowa).

Wersja bez rekurencji ogonowej jest dość oczywista:

let length l =
    match l with
    | [] -> 0
    | h::t -> (length t) + 1

Rekurencję ogonową można osiągnąć z użyciem drugiego parametru, który będzie zliczał długość dotychczas przejrzanej listy - początkowo ma on wartość 0. Jeżeli dojdziemy do końca listy, zwracamy wartość tego parametru. Dzięki temu nie wykorzystujemy w ogóle stosu wywołań funkcji - działamy jak iteracyjna pętla ;)

let length l =
    let rec length l acc =
        match l with
        | [] -> acc
        | h::t -> length t (acc + 1)
    in
        length l 0

niedziela, 25 października 2009

F# i gimnastyka umysłu

Ostatnio trafiłem na następujący artykuł (a właściwie jego tłumaczenie):

http://www.devblogi.pl/2009/09/niebezpieczne-java-szkoy.html

W dużym skrócie: autor ubolewa nad tym, że studentów informatyki nie uczy się już wskaźników ani rachunku lambda (i programowania funkcyjnego).
Artykuł powstał w USA w 2005 roku, ale widać że taka moda przychodzi już do Polski - na nowych studiach inżynierskich z informatyki na IZ na PWr naukę zaczyna się od Javy (a nie C++ jak kiedyś lub Pascala, jak kiedyś-kiedyś), przynajmniej kurs "Paradygmaty programowania" dra Spławskiego nadal uczy OCamla (jako dodatku do Oz) ;)

A ja, czytając ten artykuł, postanowiłem zacząć bawić się .NETowym językiem F# :)