Ciągle słyszę dużo o programowaniu bez punktów i postanowiłem zrobić mały eksperyment, aby przetestować moje zrozumienie tego. Wymagało to zaostrzenia funkcji liczbowej i przekształcenia jej w formę wolną od punktów. Udało mi się to zrobić, ale wynik wolny od punktu jest dużo mniej czytelny niż wynik ostry.Notacja punktowa, rekursja i dopasowywanie wzorów
-- pointed
fact 0 = 1
fact n = n * (fact (n-1))
-- point free
fact' = foldr1 (*) . takeWhile ((<) 0) . iterate (flip (-) 1)
Czy brakuje mi czegoś, co jest niezbędne do wycelowania w notację wolną czy jest to tak czytelne, jak pewne przekształcenia? Wydaje mi się, że dużą częścią funkcji fact
jest dopasowanie wzorca na zero, a nawet dopasowanie wzorca jest jednym z największych powodów, dla których kocham Haskella. Jednak notacja wolna od punktów wydaje się zupełnie nie pozwalać na to, podobnie jak niektóre inne rzeczy, które są niezwykle użyteczne, jak na przykład listy.
wolę 'produkt. enumFromTo 1'. – Vitus
[Ewolucja programisty Haskella] (http://www.willamette.edu/~fruehr/haskell/evolution.html) – sdcvvc
Czekaj. Oczekiwano _readability_ od _point-free syntax_? Ha. Ha ha. Hahahahaha. Nie. –