Comment detail

与えられた数字のケタ数 (Nested Flatten)

This comment is reply for 1942 takkanm: あえて数字を文字列にしない方向で(与えられた数字のケタ数). Go to thread root.

point free style で
1
2
3
4
binapp = (flip .) . (((.) .) .) . (.)
keta = uncurry (binapp (,) id (`div` 10)) . head
     . snd . flip break (zip [1..] (iterate (10*) 10)) 
     . (. snd) . (<)
点々だらけ… 書く方はある程度規則的に展開できるからいいとして、読めるんもんなのでしょうか、こういうの?
> 読めるんもんなのでしょうか、こういうの?

型が解れば読めなくはないですが、よみやすさは nlambda と変らないですね :)

(.)が多段になると読みにくくなると思います。(.)が2段くらいまでなら、すぐに慣れて、その場でササッと書けるようになりますし、さっと読めるようになります。

nlambda → unlambda
> . (((.) .) .) . (.)

ぎょっとしました。
なるほど、関数を合成する演算子も+なんかと同様に
(.)で2引数を取る関数になったり、
部分適用したりができるわけですね…

Index

Feed

Other

Link

Pathtraq

loading...