clojure-flavored-javascript icon indicating copy to clipboard operation
clojure-flavored-javascript copied to clipboard

P138---第7.2.5节 monad就是一个自函子范畴上的幺半群

Open boboyada opened this issue 8 years ago • 2 comments

真是本好书 但第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明明是一元操作呀? 可能文子解答不容易,可否请您简单影音一下,一边在纸上写,一边语音解说? 你对单子与幺半群的对比解释,可能最易让读者方便理解

顺祝节日快乐

boboyada avatar Dec 25 '16 03:12 boboyada

monid{ S: Maybe, Maybe[maybe], Maybe[Maybe[Maybe]]等等元素,

二元运算符:flat 幺元:return } 谁修正,说明一下?

boboyada avatar Dec 25 '16 08:12 boboyada

hi, @boboyada 你的这个monid的定义是对的,.代表composition

Maybe(* -> *)
Maybe . Maybe -> Maybe[Maybe[*]] (* -> *)

flat是functor范畴上的二元操作

flat(Maybe . Maybe) -> Maybe[]

而且这句话只是个比喻,并不是说monad会实现monoid,说的是functor范畴(*->*),实例Maybe并不能concat

jcouyang avatar Dec 26 '16 02:12 jcouyang