Erlangの勉強も兼ねてChurch数を書いてみた。とはいえ、これでいいのかな?
ついでに見よう見まねでEunitも使ってみました。まだまだ勉強しなくちゃいけないことはたくさんありますな。
-module(church). -author('Ehren'). -include("eunit.hrl"). -export([display/1,add_1/1,add/2]). display_test_() -> Zero = fun(_) -> (fun(X) -> X end) end, One = add_1(Zero), Two = add_1(One), Three = add(One,Two), [ ?_assert(print(Zero) == 0), ?_assert(print(Three) == 3) ]. print(F) -> Inc = fun(X) -> X + 1 end, (F(Inc))(0). add(A,B) -> fun(F) -> fun(X) -> (A(F))((B(F))(X)) end end. add_1(N) -> fun(F) -> fun(X) -> F((N(F))(X)) end end.
追記
id:clairvyもErlangでChurch数書いてますね。
こちらの方がソースもきれいですね!さすがだなー。
http://d.hatena.ne.jp/clairvy/20090409/1239285851