#@chaton_cljp @chaton_gauche #haskell Haskellナイトの前売りは今日18時まで、メール予約は今日20時まで。以後は当日券です。ただし今日と明日のFranzセミナーで配るチラシ持参者は当日券2000円です。
#Y コンビネータにメモの機能を入れるアイディアが、以下に書かれています。
##この Y をどなたか実装して、見せて頂けませんか?
#以下を基にして下さい。
#import Unsafe.Coerce
fib = \f n -> if n < 2 then n else (f (n-1)) + (f (n-2))
y = \f -> (\x -> f (x (unsafeCoerce x))) (\x -> f (x (unsafeCoerce x)))
#y が状態を持つので State モナドにしないといけないのでしょうかね。
#メモには、Data.IntMap を使って頂けると嬉しいです。
#これ、だいぶ前に http://www.sampou.org/cgi-bin/haskell.cgi?Memoise でやったのと本質的には同じだと思います。「実装を共有する魔法」というやつです。 #もっと洗練された方法はあるかもしれませんが。。。
#ああそうかΥの中にほりこむのか。
#memoY = b evalMemo (b (b y) b memoise)
#memofib = memoY fibF
#fibF f 0 = 0
#fibF f 1 = 1
#fibF f n = f (n-1) + f (n-2)
#あれこれライブラリつくったことあるな。
###Cabalファイルを修正したのでたぶん動くはず。
#Control/Memo.hs と examples/fib.hs を見てください。memoY = memo table です。
#明日のHaskellナイトですが本持参すると何かいいことありますか?
#最初の一時間は、サイン会です。