Iota

Bx=S(Kx)

S(Kx)yz = Kxz(yz) = x(yz)なので、 BxとしているところはS(Kx)とできる。よって、Dの場合なら、 D = BB = S(KB)また、addの場合なら、 add = BSD = BS(BB) = S(KS)(S(KB))iで書き直すと add = i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(…

JavaScriptでIota

Haskellはダメだったので、今度はJavaScriptでやってみる。まず、関数iを定義する。 折り返して書いたけど、実際の構造はreturn f (function(x)...) (function(x)...); function i(f){ return f(function(x){return function(y){return function(z){return x…

HaskellでIota

本物のIotaはこれ。 http://ling.ucsd.edu/~barker/Iota/ これをHaskell上で再現してみる。まず、関数iを定義する。 i f = f (\x y z->x z (y z)) (\x y->x)テストしてみる。 iにiを適用すると恒等関数になるはずなのでi i 0は0を返すはず。 Main> i i 0 <interactive>:1:</interactive>…