comonad相关内容

Haskell 中的 Comonad 类型类是什么?

Haskell 中的 Comonad 类型类是什么?正如来自 Control.Comonad 中的 Comonadcomonad 包(也欢迎对提供 Comonad 类型类的任何其他包进行解释).我隐约听说过 Comonad,但我真正知道的是它提供了 extract :: w a ->a,有点类似于 Monad 的 return :: a ->一个. 在“真实"代码中注意“真实"使用 Como ..
发布时间:2021-12-14 11:54:16 其他开发

拉链共轭,一般

给定任何容器类型,我们可以形成(以元素为中心的)Zipper 并且知道这个结构是一个 Comonad.最近在 another Stack 中详细探讨了这一点以下类型的溢出问题: data Bin a = Branch(Bin a) a (Bin a) |叶派生函子 带有以下拉链 data Dir = L |电阻data Step a = Step a Dir (Bin a) 派生函子data ..
发布时间:2021-12-14 11:43:36 其他开发

如何从 monadic action 中提取价值

是否有带有签名的内置函数:: (Monad m) =>m a ->一个 ? Hoogle 说没有这样的功能. 你能解释一下原因吗? 解决方案 monad 只提供两个功能: return :: Monad m =>->嘛(>>=) :: Monad m =>m a ->(a -> m b) ->米 这两个都返回 m a 类型的东西,所以没有办法以任何方式组合它们来获得 Mon ..
发布时间:2021-12-14 11:39:58 其他开发

随机走在尖头的容器上

让我们考虑一个在隧道中游荡的矮人.我将定义一个代表这种矮人的类型.这样的情况: 数据X a = X {xs :: [a],i :: Int}显示:: X Bool->IO()显示X {..} = putStrLn(concatMap f xs)其中{f True ="*";f False =“-"} 在这里,您会在隧道的一部分中看到一个矮人: λ显示x-* --- 已发现指向容器是 C ..
发布时间:2021-05-13 20:39:26 其他开发

Codata的简要总结(其中comonad是“输入杂质的类型")

用精巧的摘要表示-对Comonads的描述似乎很成功-将它们描述为“输入杂质的类型" '. codata的等效精简(单句)描述是什么? 解决方案 "Codata是可能由无限值占据的类型" 这与仅由有限值占据的“数据"形成对比.例如,如果我们使用列表的“数据"定义,那么它就被有限长度的列表所占据(如ML中一样),但是如果我们使用"codata"的定义,它也就被无限的也所占据了长度 ..
发布时间:2020-05-10 21:48:26 其他开发

总结摘要. (如果monad是“不纯计算的类型")

用精妙的摘要表示-对Monads的描述似乎赢得-将它们描述为“不纯计算的类型". 什么是对同伴的精简(单句)描述? 解决方案 “一种用于上下文相关计算的类型" 或者,更好的对单子的“虚假描述"可能是“输出杂质的类型",在这种情况下,对共纳原子的虚假描述是“输入杂质的类型". (如果您对comonads感兴趣,在我的一些演讲幻灯片中会提供更多介绍: ..
发布时间:2020-05-10 21:47:46 其他开发

作家monad和unsequence

我使用 Writer monad来跟踪任意值(例如 Int )。一旦标志被设置,它就是“粘性”,并将其自身附加到由于任何标记的操作而产生的所有值。 有时碰撞标志与个人价值观,有时我想与列表等复合结构相关联。当然,一旦碰撞标志被设置为整个列表,假定它被设置为单个元素也是有意义的。所以对于作者monad m 我需要以下两个操作: sequence :: [ma] - > m [a] ..
发布时间:2018-06-05 11:52:06 其他开发

应用程序是monad X要共享的内容

我们可以用X来解释这个公式吗? 解决方案 经过一番思考,我认为这实际上是一个落后的问题。有人可能会认为 ComonadApply 是 Comonad Applicative 是 Monad ,但事实并非如此。但是为了看到这一点,让我们使用PureScript的类型类层次结构: pre codelass c Functor f其中 fmap ::(a - > b) - > f a - ..
发布时间:2018-06-04 17:26:28 其他开发

你能基于Monads来定义`Comonads`吗?

好吧,我们假设你有类型 newtype Dual f a = Dual {dual :: forall r。 f(a - > r) - > r} 事实证明,当 f 是一个Comonad, Dual f 是一个Monad(有趣的练习)。你可以定义 fmap ab(Dual da)= Dual $ \fb - >它可以反过来工作吗? da $ fmap(.ab)fb 和 ..
发布时间:2018-06-04 15:51:35 其他开发

镜头在Comonads或可代表

以下是这个问题的一个更具体的变体:只突出Store Comonad的焦点?,因为不会一次询问多个问题。 是否有与 Control.Lens ,它允许我与一个comonad的焦点进行交互(从 extract )或与Store Comonad的索引/值( pos )? 好像镜片可能是有些在这里使用,但我一直无法找到任何合适的东西;任何帮助将不胜感激,谢谢! 解决方案 Comonad ..
发布时间:2018-06-04 15:23:22 其他开发

什么是商店comonad?

对 Haskell中的Comonad类型类型有一些想法 ,我听说过Store的comonad。但看看 Control.Comonad.Store.Lazy ,我真的不明白。这是什么意思?它是为了什么?我听说Store = CoState是State Monad的双重身份。这意味着什么? 解决方案 如果您看一下 StoreT本身。 您可以将其视为更大结构中的“地点”。例如,镜头只是 a ..
发布时间:2018-06-04 15:05:12 其他开发

Haskell中的Comonad类型类是什么?

Haskell中的Comonad类型类是什么?正如来自 Control.Comonad中的Comonad comonad软件包(对提供Comonad类型的任何其他软件包的解释也是受欢迎的)。我隐约听说过Comonad,但我真正知道的是,它提供了 extract :: w a - > a ,类似于Monad的 return :: a - > 在“真实”代码中注明Comonad的“真实生活”用途 ..
发布时间:2018-06-04 14:32:21 其他开发

如何从monadic动作中提取价值

是否有内置函数,其签名 ::(Monad m)=> m a - > a ? Hoogle告诉我们没有这样的功能。 你能解释一下为什么吗? 解决方案 函数: return :: Monad m => a - > m a (>> =):: Monad m => m a - > (a - > m b) - > mb 这两个都返回类型为 ma ,因此无 ..
发布时间:2018-06-04 14:29:20 其他开发

underscore.js中的链函数是否创建了monad?

在 链文档中,您会发现: 在包装对象上调用 chain 会导致所有将来的方法调用 以返回包装的对象。完成 计算后,使用值检索最终值。 因此, chain 功能创建monad? 解决方案 不,不是一个monad,而是一个comonad!它变成一个函数,它接受一个包装对象并将一个正常值返回到一个函数中,该函数将获取并返回一个包装对象。作为一个Haskell类型的签名可以是: ..