A właśnie, że się da!

O mnie: Programista za dnia, matematyk po zmroku. 27 lat. Interesuję się wizualizacją danych i językami programowania. Ostatnio dużo czasu spędzam z Clojure, dialektem Lispa dla JVM. Rok 2009 spędzam w Kopenhadze i okolicach, gdzie pracuję w małej firmie software'owej.

niedziela, 20 lipca 2008

Funkcjonalnie

Ostatnio próbowałem przepisać pewien algorytm na generowanie permutacji w funkcyjny sposób. Oryginał napisano w C#, więc pełno tam efektów ubocznych. Moje pierwsze podejście użycia Clojure do odtworzenia tego algorytmu poszło mniej więcej tak:

Jak widać, zgubiłem się w połowie drogi. Ale to właśnie dostajesz, gdy próbujesz pisać proceduralny/OO kod w funkcyjnym języku, przy użyciu niezmiennych struktur danych. Zazwyczaj właściwą drogą na wydostanie się z bajzlu, jak ten powyżej, jest użycie map lub jej syntaktycznego brata: list comprehension (czyli makro forw Clojure).

Zabawa zakończyła się leniwie wartościowaną listą permutacji, przy czym leniwość kosztowała mnie zero wysiłku - dostałem ją za darmo od języka.

Pisanie w Clojure wciąż nie idzie mi zbyt płynnie, ale nie jest ani w ćwierci tak strasznie, jak wtedy, gdy próbowałem napisać coś sensownego (czyli nie "Hello world") w F#. Prawdopodobnie pomogło zaznajomienie się ze Scheme w ciągu zeszłych 2-3 miesięcy.

Opublikowano o 19:30 # 0 komentarzy

Dzielenie Przez Zero wchodzi w skład Halting Problem.net.