Concurrent Clean : ポイントフリー & SKI
はじめまして、ポイントフリーゲームをしてみました。
問題は、[id:n314:20061022:1161504834]から借用。
f0 a b = h (g a b)
まず、関数合成演算子を用意。(StdFuncモジュールに定義されているもの)
(o) infixr 9 (o) f g :== \ x -> f (g x)
これを使って、
f1 a = h o g a // ((o) h) (g a) f2 = ((o) h) o g
さらに、SKIコンビネータを用意。
i a :== a k a b :== a s f g x :== f x (g x)
で、関数合成演算子をSKIで書き直し。
//p f g a = f (g a) // = (k f) a (g a) // = s (k f) g a p f :== s (k f)
でもって、(o)をpで置き換えて、
f3 a = p h (g a) f4 = p (p h) g
さらに、SKIで置き換え。
f5 = s (k (p h)) g f6 = s (k (s (k h))) g
-
-
- -
-
ところで、
p :== s o k
ということは、
p :== p s k
ということ?