((S(K((S((SK)K))(K((S(K(S((SK)K))))K)))))((S(K((S(K((S(KS))K)))((S(KS))K))))((S(K(S((SK)K))))K)))
大抵,Yコンビネータには型推論はできない. でも例えばStandard MLの再帰関数を定義する機能を使えば楽々定義できる. fun Y f x = f (Y f) x fun fact_ fact x = (* この fact_ を "seed" と呼ぶ *) if x = 0 then 1 else x * fact (x-1) val fact = Y fact_ "Seed" にラッパをかぶせれば機能を楽に付加できる. fun printerWrapper f_ f x = let val result = f_ f x val _ = printInt result in result end val factPrint = Y (printerWrapper fact_) このfactPrintは再帰の途中経過を印字する. Haskellのように副作用をモナドで分離しなければな
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く