我正在学习单子并有几个问题。
这就是我现在的位置。请纠正我哪里错了。
该
>>=
符号是一个中缀运算符。中缀运算符是接受两个参数(左侧和右侧)并返回一个值的函数。该
>>=
符号称为绑定运算符并具有签名Monad m => m t -> (t -> m u) -> m u
。但是,这些类型似乎并没有在这里排列。我们得到一个类型的值,m t
第二个参数是一个接受t
. (我不知道如何连接这些点。)这必须意味着绑定函数能够以某种方式
m
从 them t
中删除,以便获取 thet
并将其传递给函数。
以下是我的问题:
m
是否能够从m t
只有在这种绑定运算符中才能实现的东西中删除。这个绑定运算符是否有一些特殊的特权或什么?它与状态变化有什么关系?我理解(我认为)单子的目标是“包装”副作用,以便它们与程序的其余部分隔离。但是绑定运算符在其中的作用是什么?