clojure-flavored-javascript
clojure-flavored-javascript copied to clipboard
P138---第7.2.5节 monad就是一个自函子范畴上的幺半群
真是本好书 但第P138页即---第7.2.5节 monad就是一个自函子范畴上的幺半群,这部分内容令我极度困顿。 图7-7中,右下角是Just 1呢,还是1(不在盒子里) 一个monid有三要素。集合,二元操作,幺元(必须是集合的一个成员或元素), 一个monid(集合例如int,二元操作如+,幺元0)
请问,针对monad(比如Maybe单子),来填一下 它的集合是什么,最好能列出三个以上集合元素,列出它的二元操作,列出它的幺元,幺元还必须是集合元素的一个成员
flat(flat(Maybe.Maybe).Maybe)=flat(Maybe.flat(Maybe.Maybe)) 这个公式与(1.2).3 = 1.(2.3)相比,也很迷糊,如何对应?前者即出现Maybe,又出现flat,而且"."符号才是二元操作?
flat明明是一元操作呀? 可能文子解答不容易,可否请您简单影音一下,一边在纸上写,一边语音解说? 你对单子与幺半群的对比解释,可能最易让读者方便理解
顺祝节日快乐
monid{ S: Maybe, Maybe[maybe], Maybe[Maybe[Maybe]]等等元素,
二元运算符:flat 幺元:return } 谁修正,说明一下?
hi, @boboyada 你的这个monid的定义是对的,.
代表composition
Maybe(* -> *)
Maybe . Maybe -> Maybe[Maybe[*]] (* -> *)
flat是functor范畴上的二元操作
flat(Maybe . Maybe) -> Maybe[]
而且这句话只是个比喻,并不是说monad会实现monoid,说的是functor范畴(*->*
),实例Maybe并不能concat