相关疑难解决方法(0)

在哈斯克尔执行monad法律吗?

来自Haskell维基:

Monad可以被视为各种数据或控制结构的标准编程接口,由Monad类捕获.所有常见的monad都是它的成员:

class Monad m where
  (>>=) :: m a -> (a -> m b) -> m b
  (>>) :: m a -> m b -> m b
  return :: a -> m a
  fail :: String -> m a
Run Code Online (Sandbox Code Playgroud)

除了实现类函数之外,Monad的所有实例都应遵循以下等式或Monad Laws:

return a >>= k  =  k a
m >>= return  =  m
m >>= (\x -> k x >>= h)  =  (m >>= k) >>= h
Run Code Online (Sandbox Code Playgroud)

问题:底层的三个monad法律是否实际上以语言强制执行?或者它们是否必须强制执行的额外公理,以便你的"Monad"语言结构与"Monad"的数学概念相匹配?

monads haskell

19
推荐指数
2
解决办法
1235
查看次数

标签 统计

haskell ×1

monads ×1