monads相关内容

JavaScript 中的 Monad

所以我想了解 JavaScript 中的 monad 有用的实际案例. 我阅读了大量有关 JavaScript 中 Monads 的文章,并了解到 jQuery 是其使用示例.但是除了“链式"模式,前端工程中使用Monads还能有效解决哪些问题? 参考: http://importantshock.wordpress.com/2009/01/18/jquery-is-a-mona ..
发布时间:2021-06-03 19:22:07 前端开发

Haskell Monad返回类型

我正在尝试做一些编程工作,但我无法进入单子.我对IO功能做了一些改进,但现在我肯定迷路了... 我有一个从网络加载的XML字符串(因此它被“存储"在 IO String 中).因此,我需要一个 do 块才能加载到通用String中. foo :: IO字符串->没有什么foo xmlio =做xmlio ..
发布时间:2021-05-13 20:47:27 其他开发

Haskell:替换monad变压器堆栈中的mapM以实现惰性评估(无空间泄漏)

已经讨论过 mapM 本质上不是惰性的,例如此处和 一种解决方案是使用流媒体库,例如 pipes , conduit 等.但是这些看起来很繁重,我也不知道如何使用它们.在这种情况下. 我研究过的另一条路径是 ListT ,如此处.但是 ListT.fromFoldable :: [Bool]-> ListT Bool 和 ListT.fold ::(r-> a-> m r)->的类型签 ..
发布时间:2021-05-13 20:45:41 其他开发

用于Vector.Stream的流转换器Monad

Data.Vector.Stream 提供了一个很好的 Stream 实现,这非常有效,这要归功于对可熔性的关注(请参阅 Step 输入单子.(现在,该实现位于 导管 或 Stream Bool ,则可能需要使用一些聪明的编解码器对位进行解码,以产生 Stream Int .当然,总是有可能建立一个新的步进函数 s->.从 step 函数提取的给定 Stream步骤s 的step s b .重复应 ..
发布时间:2021-05-13 20:45:28 其他开发

无法理解Monad>>的结果应用

操作>>描述如下: 依次组成两个动作,舍弃由首先,像命令运算符(例如分号)一样语言. 以下是使我感到困惑的示例: >([1] ++ [2])>>([2] ++ [3])[2,3,2,3] 我期望列表[2,3]是表达式右边部分的结果.如何解释[2,3,2,3]的结果? 解决方案 (>>)默认情况下定义为 a>>b = a>> =(\ _-> b) 因此被忽略的值是给 ..
发布时间:2021-05-13 20:39:58 其他开发

在没有上下文的情况下,Haskell中的return 5的类型是什么?

在此问题中,OP询问表达式的类型 return 5 是,并且已经在该问题中给出了答案:它是通用类型,可以通过键入来验证 :t返回5 在Haskell解释器中: return 5 ::(Num a,Monad m)=>嘛 return 的具体实现取决于它出现的上下文:类型推断会将 m 限制为特定的monad,例如 Maybe , [] , IO 等. 我还可以通过指定类型来强制解 ..
发布时间:2021-05-13 20:39:32 其他开发

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)的任何 ..
发布时间:2021-05-13 20:33:59 其他开发

haskell,如何解开IO monad

我可以执行以下操作: runIdentity , runErrorT 等,以解开内部monad. 但是,如果使用 IO(任何一个字符串整数),我该怎么办?如何解开包装? 解决方案 您不解包 IO a 操作.相反,您将它们包括在 main 操作(其具有 IO 类型,因此可以使用此类操作)中,并且编译器确保 main 为被执行. 您可能还会教一些不了解 IO 的函数,该如何处理 IO ..
发布时间:2021-05-13 20:33:39 其他开发

有没有办法在纯函数中放置一些不纯净的代码?

IO 就像 Maybe 一样,只是 Monad 的一个实例.另一方面,我们拥有用于也许的所有数据构造函数( Just 和 Nothing ),但是没有用于 IO 的构造函数. Reader 和 Writer 也不导出构造函数,它们具有函数,这些函数返回此类型的实例( reader 和 writer ),更重要的是 runReader 和 runWriter ,它们从Monad解开计算结果. ..
发布时间:2021-05-13 20:33:01 其他开发

使用IO monad的Haskell单元测试

我正在尝试为haskell函数编写HUnit测试,这些函数返回IO monad,因为它们执行文件I/O.有什么办法吗?现在,我正在尝试编写一个仅返回Bool的方法,可以作为我的测试 combine :: FilePath->FilePath->布尔结合fp1 fp2 =做cs ..
发布时间:2021-05-10 20:13:48 其他开发

在Haskell中如何实现列表推导?

列表理解仅仅是语言功能吗? 使用纯Haskell伪造列表理解的最简单方法是什么? 您是否必须使用do块/>> = 来执行此操作,或者可以使用其他方法一起破解列表理解的方法? 澄清:通过“伪造"列表理解,我的意思是创建一个函数,该函数接受相同的输入并产生相同的输入,即返回值的形式,列表要紧缩在一起以及谓词或多个谓词. 解决方案 第3.11节在Haskell报告中准确地描述了列表理解 ..
发布时间:2021-05-10 20:13:14 其他开发

在GHCi中,为什么我不能在REPL中显示“纯1"?

我尝试为 a 分配提升的值. λ>:m Control.Applicativeλ>设a =纯1 当我在REPL中评估 a 时,它将打印 1 . λ>一种1个 因此,我认为可能为 a 实现了 show 的实现,并尝试了以下方法: λ>显示一个 但是GHCi会引发错误: :70:1-4:没有因使用“显示"而产生(Show(f0 a0))的实例类型变量"f ..
发布时间:2021-05-09 20:26:58 其他开发

有内在的原因可以解释为什么Rust没有更高种类的类型吗?

铁锈没有更高种类的类型.例如,函子(以及因此的monad)不能用Rust编写.我想知道是否有深层原因来解释这一点以及原因. 例如,我能理解的原因可能是没有零成本的抽象使HKT成为可能.否则类型推断要困难得多.当然,我也正在寻找一种解释,向我说明为什么这是真正的局限性. 如果答案已经在其他地方给出了,您能给我链接吗? 解决方案 时间&优先级. 缺少高级种类类型本身并不是设计 ..
发布时间:2021-05-09 20:26:49 其他开发

TypeScript中的注解

我正在尝试找出一种在TypeScript中美化Monadic库的方法.尽管monad本身的实现进展顺利,但其用法看起来像是熟悉的回调地狱. 我想知道是否有办法劫持async/await或yield/for..of的单子语法糖,但是我必须承认我在连接点时遇到了一些麻烦.是否可以在既不是Promise也不是Iterable的事物上使用这些构造,并且该构造与由react组件组成的延续monad一样 ..
发布时间:2021-05-09 20:23:57 其他开发

有有效的阵列monad变压器吗?

我知道如何实现单链表monad转换器,但无法运行其数组副本.问题在于存在分组效应,该效应使变压器仅对可交换基本单声道有效.这是一个示例,为简单起见,转换器和基本monad均为数组,并且没有转换器类型包装器: //数组const arrMap = f =>xs =>xs.map((x,i)=> f(x,i));const arrAp = tf =>xs =>arrFold(acc => f = ..