ポイントフリー
Twitterから転載
ラムダ使わずにプログラム書くの難しい。一つの値を名前に束縛せずに複数箇所で使うってどうやるんだ。Sコンビネータ的なものが用意されてる?
Control.ApplicativeにSコンビネータあった
→Control.Applicativeの<*>がSコンビネータだと書いている人がいるがぜんぜん違うように見える。
→Control.Applicativeの<*>がSコンビネータであることは挙動で確認したが、本来なんのためのものなのかとか、なんでこれでSコンビネータになるのかとかがわからない
→haskell-ja > Archives > 2009/11/02
square = (*)<*>id -- \x -> x * x
cube = (((*).((*)<*>id))<*>id) -- \x -> x * x * x
import Control.Applicative if' True x _ = x if' False _ y = y fib = (flip(if'.(< 2))1)<*>((+).fib.(-1 +)<*>fib.(-2 +)) main = print $ take 10 $ map fib [1..]