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

