PLT 板


LINE

看板 PLT  RSS
※ 引述《suhorng ( )》之铭言: : 不过那个结构[aka. data Free f a = Pure a | Impure (f (Free f a))] : 到底要怎麽推出来呢...? 我觉得若能用 "monad is monoid in the category of endofunctors" 这个观点把 free monoid 和 free monad 类比起来,应该会比较直觉。 (警告:本文论述和正式理论有显着差距。) 先从 monoid 和 monad 的类比开始。我们知道 monoid 是有单位元素和 二元乘法(具结合律)的集合。对应到 monad 时,我们得问这个「集合」 是什麽,以及这「集合」里的「元素」如何「相乘」。(单位元素请自行脑补。) 这里需要一点想像力的飞跃:给定 monadic functor M, 我们可以把 M 想成一个 type, 里面的元素是「一层 M-结构」。例如,定义 data Expr a = Var a | Add (Expr a) (Expr a) Expr 是个 monad. 什麽是「一层 Expr-结构」?考虑 Expr Int: 这是在整数上加一层「Expr-结构」 —— 整数并非赤裸裸地出现, 而是包在某个树形里。这个树形可能是 Var -(减号代表为了包东西留的洞), 可能是 Add (Var -) (Var -), 或更复杂的东西。这些用来包东西的树形 可直观视为 Expr 这个 "type" 的元素。(如果你觉得这个说法有漏洞, 你大概懂了...) 那麽「Expr-结构」相乘是什麽意思?是两层树形整并成一层树形,即 join :: Expr (Expr a) -> Expr a join (Var e) = e join (Add es es') = Add (join es) (join es') 若树形里面包的东西(都)是树形,那麽整个形状可「视为」一个更大的树形。 「整并」有结合律:若树形里包树形,後者里面再包树形,那麽把这三层整并成 一层时,先整并外两层或内两层,结果都一样。 至此我们已可对照 monoid 和 monad —— 我们把 join 的型态写成 "point-free style" join :: (Expr . Expr) ~> Expr -- natural transformation 以便和 monoid(以固定大小的方阵为例;无特别意义)做类比: monoid(固定大小的方阵) monad (Expr) 元素 方阵 用来包东西的树形 两个元素 一对方阵 树形里包树形 (cartesian product) (functor composition) 乘法 矩阵乘法 嵌套的树形整并为一 (型态为 方阵 × 方阵 -> 方阵) (形态为 Expr . Expr ~> Expr) 这类比完整且精确地写下来,就是有名的那句 "All told, a monad X is just a monoid in the category of endofunctors of X". 回到 free monoid 和 free monad. 前者的构造可想成对乘法封闭性的追求: 给一集合 S, 我们当然没办法把任两个 S 的元素合成一个 S 的元素,但如果 我们把「一对元素」也视为合法元素,那现在任两个 S 的元素确实可以合成一个 合法元素。但我们要的是任意合法元素的合成,所以我们又必须考虑 S 的元素 如何和「一对元素」合成,以及「一对元素」和「一对元素」如何合成,因此 我们只能把合法元素的定义推广到「一个、两个、三个、或四个元素排成一排」。 依此类推以至无穷(并将乘法单位元素纳入考量),我们得到的合法元素定义 就变成「任意有穷个元素排成一排」,在这个定义上乘法才终於封闭了。 Functor F 上的 free monad 也是一样,不过现在「一排元素」指的是任意 有穷层的嵌套「F-结构」,即「零层或一层或两层或 ... 的 F-结构」。 这可以很随性(全无理论基础)地写成 F* ~= 1 + F + F^2 + ... 我们可以弄点高中数学,左右同乘 F 再加 1 (identify functor): F . F* ~= F + F^2 + ... 1 + F . F* ~= 1 + F + F^2 + ... ~= F* 最後一式左右翻转、逐点 (pointwise) 展开就得到 F* a ~= a + F (F* a) 对应於 Free f 的定义。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.1.130.189 ※ 编辑: joshs 来自: 163.1.130.189 (10/30 22:47)
1F:→ scwg:查一下 IP (xcycl 和 joshs) 就知道, 药学好 category 就要去 10/30 22:58
2F:→ scwg:英国 (误) 10/30 22:58
3F:→ joshs:我 category theory 不好啦.. 像刚刚 xcycl 才骂我太随便 XD 10/30 23:20
※ 编辑: joshs 来自: 163.1.130.189 (10/31 00:49)
4F:→ xcycl:我才是太随便的人啦 QQ 10/31 00:56
5F:→ CindyLinz:後面这段无穷级数求极限太过份了 XD 10/31 16:29
xcycl 也是当我这里,因为 1 + F + F^2 + ... 和 1 + F(1 + F(1 + ...)) 不一样。现在我知道为何左式(真的)不对了 XD。 两个问题: (1) 为何左式不对? (2) 为何胡乱操作无穷级数竟变得出真的 free monad? ※ 编辑: joshs 来自: 163.1.130.189 (11/01 01:46)
6F:→ suhorng:大惊XD 11/01 10:39







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP