それで、私はポイントフリープログラミングについて多くのことを聞き続け、それを理解するために少し実験をすることにしました。これには、先のとがった関数を使用して数値の階乗を計算し、それをポイントのない形式に変換することが含まれていました。私はなんとかそれを行うことができましたが、ポイントフリーの結果は、ポイントされた結果よりもはるかに読みにくくなっています。
-- pointed
fact 0 = 1
fact n = n * (fact (n-1))
-- point free
fact' = foldr1 (*) . takeWhile ((<) 0) . iterate (flip (-) 1)
自由な表記法を示すために不可欠なものが欠けていますか、それとも特定の変換が得られるのと同じくらい読みやすいですか?私には、fact
関数の大部分はゼロでのパターンマッチングであるように見えます。実際、パターンマッチングは、私がHaskellを愛する最大の理由の1つです。ただし、ポイントフリー表記は、リスト内包表記などの非常に便利な他のいくつかのこととともに、それを完全に禁止しているようです。