作者CindyLinz (Cindy Wang)
看板PLT
标题Re: [问题] Free Monad 是怎麽来的?
时间Wed Oct 30 21:27:45 2013
※ 引述《xcycl (XOO)》之铭言:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 78.151.174.221
: ※ 编辑: xcycl 来自: 78.151.174.221 (10/30 09:26)
: 推 CindyLinz:我觉得这个结构看起来跟 church number 有点像说 ^^ 10/30 20:24
: → CindyLinz:church number 作加法时就是把 succ 丢进去; 乘法是把 10/30 20:24
: → CindyLinz:add 丢进去.. 10/30 20:25
: → suhorng:喔~ 好像一个要从 X0 取? 10/30 20:43
: → suhorng:@1F church number 那边不太懂 QQ 10/30 20:43
参考这边..
http://en.wikipedia.org/wiki/Church_encoding
Church 在只有函数的 lambda calculus 里面定义
0 为 \f \x -> x
1 为 \f \x -> f x
2 为 \f \x -> f (f x)
3 为 \f \x -> f (f (f x))
...
我觉得这边的 f, 有像 free monad 里面留个位置把 functor 丢进去的 fu~
succ = \n \f \x -> f (n f x) 用来把 n 变成 n+1
就是把 f x 丢给 n 以後, 再在它外面套一层 f
plus (wiki 上的) = \m \n \f \x -> m f (n f x)
不过我推文的时候心中想的是
plus = \m \n \f \x -> (m succ n) f x
or
plus = \m \n -> m succ n
(你看你最爱的 pointless 来了... XD)
就觉得这个套 N 层 f.. 有点那个味道,
哎唷~ 我也不知道怎麽讲清楚啦 orz
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 112.121.80.249
1F:推 suhorng:喔喔喔~~XDDD 10/30 21:38
2F:→ suhorng:a -> a, 有点 open recursion 的味道 XD? 10/30 21:39