- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是设法理解了类的定义MonadReader
class Monad m => MonadReader r m | m -> r where
...
| m -> r
指定类型变量
r
由
m
唯一决定.根据我目前看到的几个 MonadReader 的典型实例(例如
Reader
),我认为这个要求是合理的,但在我看来,我们仍然可以定义像
Reader
这样的实例。即使没有这个函数依赖子句。
最佳答案
需要以对用户更方便的方式进行类型推断。
例如,如果没有fundep,这将无法编译:
action :: ReaderT Int IO ()
action = do
x <- ask
liftIO $ print x
action :: ReadertT Int IO ()
action = do
x <- ask :: ReadertT Int IO Int
liftIO $ print x
x
。是
Int
.毕竟是一个单子(monad)
ReadertT Int IO
可能有多个实例
instance MonadReader Int (ReaderT Int IO) where
ask = ReaderT (\i -> return i)
instance MonadReader Bool (ReaderT Int IO) where
ask = ReaderT (\i -> return (i != 0))
instance MonadReader String (ReaderT Int IO) where
ask = ReaderT (\i -> return (show i))
-- etc.
x :: Int
,或者代码不明确。
关于haskell - 为什么定义 MonadReader 需要 FunctionalDependency?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58947160/
我正在通过镜头 tutorial特别是,尝试了解 view 中涉及的类型。 所以,采用定义 data Atom = Atom { _element :: String, _point :: Point
为什么 Control.Monad.Reader 中有 Reader monad 和 MonadReader monad?包文档讨论了 Reader monad,然后直接进入 MonadReader
我只是设法理解了类的定义MonadReader class Monad m => MonadReader r m | m -> r where ... 看了Haskell中的Functional De
我一直在看Refactoring some Haskell code to use MTL它重构了一些 Haskell 代码以使用 mtl 包中的类型类。 该代码包含一个具有以下签名的 postRes
与使用 Happstack 时一样,我一直在制作自己的服务器 monad 用于处理程序,以覆盖我的数据库和 session ,以及一些错误处理。我最近发现了happstack-clientsessio
我有类型 ActionT TL.Text (ReaderT T.Text IO) 我正在尝试为此创建一个 MonadReader 实例,这样我就不必提出询问,但总是得到 (All instance
考虑下一个例子。我有一个 monad MyM,它只是一个 StateT {-# LANGUAGE TypeFamilies #-} import Control.Monad.State import
我一直在努力理解 mtl通过将其与 persistent 结合使用来构建项目. 该项目的一个模块具有使用 insertMany_ 的功能。 service :: (MonadReader Appl
我刚刚发现 RWST(来自 transformers)不带有 MonadReader、MonadState 的实例,或 MonadWriter。这对我来说似乎有点奇怪,因为这些实例会立即提高可用性,例
据我所知,我们可以实现 MonadReader s (StateT s m)实例: instance MonadReader s (StateT s m) where ask = get
我是一名优秀的程序员,十分优秀!