monads相关内容
这可能是一个非常基本的 Haskell 问题,但让我们假设以下函数签名 -- 辅助函数getWeatherInfo :: 天 ->IO (WeatherException WeatherInfo)工艺查询 :: WeatherInfo ->QueryException ModelQuerymakePrediction :: ModelQuery ->IO (ModelException Mode
..
所以我想了解 JavaScript 中的 monad 有用的实际案例. 我阅读了大量有关 JavaScript 中 Monads 的文章,并了解到 jQuery 是其使用示例.但是除了“链式"模式,前端工程中使用Monads还能有效解决哪些问题? 参考: http://importantshock.wordpress.com/2009/01/18/jquery-is-a-mona
..
我正在尝试做一些编程工作,但我无法进入单子.我对IO功能做了一些改进,但现在我肯定迷路了... 我有一个从网络加载的XML字符串(因此它被“存储"在 IO String 中).因此,我需要一个 do 块才能加载到通用String中. foo :: IO字符串->没有什么foo xmlio =做xmlio
..
已经讨论过 mapM 本质上不是惰性的,例如此处和 一种解决方案是使用流媒体库,例如 pipes , conduit 等.但是这些看起来很繁重,我也不知道如何使用它们.在这种情况下. 我研究过的另一条路径是 ListT ,如此处.但是 ListT.fromFoldable :: [Bool]-> ListT Bool 和 ListT.fold ::(r-> a-> m r)->的类型签
..
Data.Vector.Stream 提供了一个很好的 Stream 实现,这非常有效,这要归功于对可熔性的关注(请参阅 Step 输入单子.(现在,该实现位于 导管 或 Stream Bool ,则可能需要使用一些聪明的编解码器对位进行解码,以产生 Stream Int .当然,总是有可能建立一个新的步进函数 s->.从 step 函数提取的给定 Stream步骤s 的step s b .重复应
..
原始问题 LYAH,在更多的单子语 显示此功能, solveRPN ::字符串->也许加倍resolveRPN st =做[结果] 为了真正理解 do 表达式和 Monad 的本质,我一直在使用>>重写该书中的大多数示
..
操作>>描述如下: 依次组成两个动作,舍弃由首先,像命令运算符(例如分号)一样语言. 以下是使我感到困惑的示例: >([1] ++ [2])>>([2] ++ [3])[2,3,2,3] 我期望列表[2,3]是表达式右边部分的结果.如何解释[2,3,2,3]的结果? 解决方案 (>>)默认情况下定义为 a>>b = a>> =(\ _-> b) 因此被忽略的值是给
..
在此问题中,OP询问表达式的类型 return 5 是,并且已经在该问题中给出了答案:它是通用类型,可以通过键入来验证 :t返回5 在Haskell解释器中: return 5 ::(Num a,Monad m)=>嘛 return 的具体实现取决于它出现的上下文:类型推断会将 m 限制为特定的monad,例如 Maybe , [] , IO 等. 我还可以通过指定类型来强制解
..
在这个问题, leftarounabout 左 a相当清楚的解释为什么我们实际上考虑 ArrowApply 和 Monad 等效. 该想法是在往返期间不丢失任何信息: arrAsFunction ::箭头k =>k x y->(x-> k()y)arrAsFunctionφx =φ
..
一旦我问了这个问题,已正确标记为读者monad 也是您monad的潜在用例.这些类型的数据类型的通用术语是可表示的函子.
..
我正在尝试编写一个只能包含Num的新monad.如果失败,它会返回0,就像失败时可能返回monad一样. 这是我到目前为止所拥有的: data(数字a)=>IDnum a = IDnum a实例Monad IDnum,其中返回x = IDnum xIDnum x>> = f = f x失败::(数字a)=>字符串->编号失败_ =返回0 Haskell抱怨有 (numa)的任何
..
我可以执行以下操作: runIdentity , runErrorT 等,以解开内部monad. 但是,如果使用 IO(任何一个字符串整数),我该怎么办?如何解开包装? 解决方案 您不解包 IO a 操作.相反,您将它们包括在 main 操作(其具有 IO 类型,因此可以使用此类操作)中,并且编译器确保 main 为被执行. 您可能还会教一些不了解 IO 的函数,该如何处理 IO
..
我正在学习Haskell和IO monad.我想知道为什么这不会迫使程序输出"hi"和"bye": 秒a b = bmain = print((second $!((print"hi")>> =(\ r-> return())))“再见") 据我了解, $!运算符将强制对 second 的第一个参数求值,而>> = 运算符将需要运行 print"hi" ,以获取其值并将其传递给 \ r->r
..
IO 就像 Maybe 一样,只是 Monad 的一个实例.另一方面,我们拥有用于也许的所有数据构造函数( Just 和 Nothing ),但是没有用于 IO 的构造函数. Reader 和 Writer 也不导出构造函数,它们具有函数,这些函数返回此类型的实例( reader 和 writer ),更重要的是 runReader 和 runWriter ,它们从Monad解开计算结果.
..
我正在尝试为haskell函数编写HUnit测试,这些函数返回IO monad,因为它们执行文件I/O.有什么办法吗?现在,我正在尝试编写一个仅返回Bool的方法,可以作为我的测试 combine :: FilePath->FilePath->布尔结合fp1 fp2 =做cs
..
列表理解仅仅是语言功能吗? 使用纯Haskell伪造列表理解的最简单方法是什么? 您是否必须使用do块/>> = 来执行此操作,或者可以使用其他方法一起破解列表理解的方法? 澄清:通过“伪造"列表理解,我的意思是创建一个函数,该函数接受相同的输入并产生相同的输入,即返回值的形式,列表要紧缩在一起以及谓词或多个谓词. 解决方案 第3.11节在Haskell报告中准确地描述了列表理解
..
我尝试为 a 分配提升的值. λ>:m Control.Applicativeλ>设a =纯1 当我在REPL中评估 a 时,它将打印 1 . λ>一种1个 因此,我认为可能为 a 实现了 show 的实现,并尝试了以下方法: λ>显示一个 但是GHCi会引发错误: :70:1-4:没有因使用“显示"而产生(Show(f0 a0))的实例类型变量"f
..
铁锈没有更高种类的类型.例如,函子(以及因此的monad)不能用Rust编写.我想知道是否有深层原因来解释这一点以及原因. 例如,我能理解的原因可能是没有零成本的抽象使HKT成为可能.否则类型推断要困难得多.当然,我也正在寻找一种解释,向我说明为什么这是真正的局限性. 如果答案已经在其他地方给出了,您能给我链接吗? 解决方案 时间&优先级. 缺少高级种类类型本身并不是设计
..
我正在尝试找出一种在TypeScript中美化Monadic库的方法.尽管monad本身的实现进展顺利,但其用法看起来像是熟悉的回调地狱. 我想知道是否有办法劫持async/await或yield/for..of的单子语法糖,但是我必须承认我在连接点时遇到了一些麻烦.是否可以在既不是Promise也不是Iterable的事物上使用这些构造,并且该构造与由react组件组成的延续monad一样
..
我知道如何实现单链表monad转换器,但无法运行其数组副本.问题在于存在分组效应,该效应使变压器仅对可交换基本单声道有效.这是一个示例,为简单起见,转换器和基本monad均为数组,并且没有转换器类型包装器: //数组const arrMap = f =>xs =>xs.map((x,i)=> f(x,i));const arrAp = tf =>xs =>arrFold(acc => f =
..