haskell - 什么是 Haskell `(->) a` 单子(monad)?

标签 haskell monads

在页面 http://www.haskell.org/haskellwiki/Pointfree#Tool_support ,它谈到了 (->) a monad。

这个单子(monad)是什么?符号的使用使 google 变得困难。

最佳答案

这是一个 Reader monad。你可以把它想象成

type Reader r = (->) r -- Reader r a == (->) r a == r -> a
instance Monad (Reader r) where
  return a = const a            
  m >>= f = \r -> f (m r) r    

然后进行如下计算:

double :: Num r => Reader r r
double = do
  v <- id
  return (2*v)

关于haskell - 什么是 Haskell `(->) a` 单子(monad)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19257009/

相关文章:

c++ - 为什么 boost::adaptors::filtered 的输出没有名为 size 的成员?

haskell - 有没有办法让 Haddock 为类型类方法呈现每个参数的文档?

clojure - 我可以在 clojurescript 中使用 monads 吗?

haskell - 什么是单态性限制?

haskell - 将 ByteString 漂亮地打印为十六进制半字节

scala - 将许多 Either 映射到一个 Either 与许多

haskell - 为什么我无法获得增加的计数器值?

scala - Future.traverse是否保证执行顺序

c++ - 如何强制 g++ 内联函数?

Scala 标准等效