Безточечная нотация, рекурсия и сопоставление с образцом

Поэтому я постоянно слышу о бесточечном программировании и решил провести небольшой эксперимент, чтобы проверить свои знания. Это включало использование точечной функции для вычисления факториала числа и преобразование ее в точечную -свободную форму. Мне удалось это сделать, но результат без точек гораздо менее читаем, чем результат с точками.

-- pointed
fact 0 = 1
fact n = n * (fact (n-1))
-- point free
fact' = foldr1 (*). takeWhile ((<) 0). iterate (flip (-) 1)

Я упускаю что-то существенное для обозначения свободной точки или это так же читабельно, как и некоторые преобразования? Мне кажется, что большая часть функции fact— это сопоставление с образцом на нуле, и действительно, сопоставление с образцом — одна из главных причин, по которым я люблю Haskell. Однако нотация без точек, кажется, полностью запрещает это, наряду с некоторыми другими чрезвычайно полезными вещами, такими как понимание списков.

7
задан Will Ness 19 August 2013 в 14:18
поделиться