Monad变换器是组合monad的抽象。这允许您组合不同的计算效果,建立精确控制的计算环境。
我正在尝试定义状态机家族,它们的状态有所不同。特别地,更“复杂”的状态机具有通过组合...
[我正在尝试编写一个从存储库读取的函数(该函数返回F [Option [Entry]],其中F是未来的函数),然后将其转换为F [Option [Element]]。函数convert()采用Seq [Entry] ...
我如何编写调用runStateT或runReaderT的函数run?
我如何编写一个通用函数运行,该函数运行某个monad转换器的对象,并调用相应的函数?给定运行s,如果s是StateT,则run = runStateT如果s是ReaderT,则run = ...
我目前正在重构,我有与Data.Time交互的一些Haskell代码。最终我有一堆的随时间交互功能:getCurrentTime :: IO UTCTime getCurrentTime = T ....
我有一个解析器定义为以下稍微复杂的版本:数据X = X {getX :: State([Int],[X])Bool}类型Parser = ParsecT Void字符串(状态([Int],[X ]))这个想法是......
到目前为止,我遇到的每个monad(可以表示为数据类型)都有相应的monad变换器,或者可以有一个。有这样一个不能有一个单子吗?或者做所有......
是否有一种优雅的方式来实现这个功能:`(Monad m)=>(s - > a - > m(s,b)) - > s - > [a] - > m [b]`
像(Monad m)=>(s - > a - > m(s,b))这样的函数产生新状态,并且基于先前状态和当前值的新值非常频繁。我们可以使用不同的方法......
我一直在尝试简单的Monad变形金刚,我的理解涉及M [F [A]],其中M和F是monad。如果S是......,如何使M [F [A]]和M [S [A]]在for comp中一起工作?
我需要编写一个也可以支持错误处理的状态monad。我正在考虑将Either monad用于此目的,因为它还可以提供有关导致错误的原因的详细信息。我找到了......
假设我有以下函数:checkA :: a - >或者错误b checkA =未定义checkB :: b - > ST s(要么错误c)checkB =未定义检查:: a - > ST s(要么错误c)检查a = ......
通过for-comprehension和applicative pure来构建ReaderT
以下是返回ReaderT和Either作为返回类型的函数:import cats.data。{ReaderT} type FailFast [A] = [List [String],A] def getValue(name:String):ReaderT [FailFast,Map [ ...
我有以下问题:val sth:Future [Seq [T,S]] = for {x n:...
我试图使用Exception.Safe包中的括号函数,它具有返回类型forall m a b c。 MonadMask m => m a - >(a - > m b) - >(a - > m c) - > m c这意味着......
这是一个很小的函数组合,所有函数都返回ReaderT:类型FailFast [A] = [List [String],A] def f1:ReaderT [FailFast,Map [String,String],Boolean] = ReaderT(_ = >对(......)
返回不同ReaderT的s3f1和s3f2函数示例:类型FailFast [A] = [List [String],A] trait Service1 {def s1f:Option [Int] = Some(10)} trait Service2 {def s2f:FailFast [ Int] = ......
只考虑一个API设计。 Haskell中的“常见”是什么?变形金刚类型签名还是“隐藏”? findById :: ID - > IO(可能用户)findById x = runMaybeT $ do ...返回用户...
我有一个用状态monad包装的记录器的示例:val logger = Logger(LoggerFactory.getLogger(this.getClass))def logState [A](s:IO [Unit],a:A):State [List [ IO [单位]],A] =国家[...
当我从Haskell Book学习Composing Types章节时,我被赋予了为以下类型编写Functor和Applicative实例的任务。 newtype Compose f g a = Compose {getCompose :: f(...
Map.lookup的Maybe结果不是我的Monad Transformer堆栈的类型检查
我将通过以下论文:Monad Transformers Step by Step。在2.1节“转换为Monadic样式”中,函数转换为Eval1 monad中的返回值。这部分......