monads相关内容

更新Haskell中的外部变量

从某种意义上说,Haskell是一种纯粹的函数式语言,当然,习惯用法代码试图尽可能地具有函数性。同时,Haskell确实支持对其他语言中熟悉的一些命令式模式进行相当直接的翻译,例如http://learnyouahaskell.com/a-fistful-of-monads#do-notation (我知道在某种意义上,do-notation仍然“真正”起作用;这里的要点是,它允许相当直接地 ..
发布时间:2022-08-14 21:50:15 其他开发

对期权的提升函数

有没有办法提升一个简单的函数,就像这样 fn add(a:i32, b:i32) -> i32 {a+b} 对Option(或任何其他一元类型)进行操作,类似于在Haskell中使用Applicative 我知道此解决方案: pub fn add(a: Option, b: Option) -> Option { Some(a? + b?) ..
发布时间:2022-07-18 11:12:53 其他开发

平面列表和免费单元格

我试图说服自己,List Monad(具有平面列表、列表连接和映射元素的Monad)不是自由Monad(准确地说,是与某个函数器T关联的自由Monad)。据我所知,我应该能够在 年实现这一目标。 首先在单体列表中查找常用运算符FMAP、Join等之间的关系 然后证明了这种关系不存在于函子T上的任何自由单子中,对于所有T 列表单子中的特殊关系是什么,使其有别于自由单子?如果我不知 ..
发布时间:2022-06-29 13:45:20 其他开发

在绑定方面,如何定义应用?

在Haskell中,应用程序被认为比函数器更强,这意味着我们可以使用应用程序Like来定义函数器 -- Functor fmap :: (a -> b) -> f a -> f b fmap f fa = pure f fa 和Monad被认为比Applicative&;Functor更强,这意味着。 -- Functor fmap :: (a -> b) -> f ..
发布时间:2022-04-20 14:24:58 其他开发

为什么定义MonadReader需要FunctionalDependency?

我刚刚理解了类的定义MonadReader class Monad m => MonadReader r m | m -> r where ... 阅读了Haskell中的函数依赖文档,现在我可以理解| m -> r指定类型变量r由m唯一决定。根据我目前所见的几个典型的MonadReader实例(例如Reader),我认为这个要求是合理的,但在我看来,即使没有这个函数依赖子句,我们仍然可 ..
发布时间:2022-04-20 14:21:32 其他开发

C++23的一元绑定和一元返回是什么可选的?

C++23std::optional终于得到了一些非常有用的附加功能。 因为我对FP的了解非常原始,所以我想知道以下两个操作的语法是什么(根据我的Google搜索是两个基本的一元操作): 一元绑定 一元回报 我的最佳猜测是: 一元绑定transform 一元返回仅为C++17std::optionalconstructor(8) 推荐答案 mbind(它 ..
发布时间:2022-04-20 14:15:56 C/C++开发

String.IsNullor Empty Monad

我最近涉足了函数式编程的迷人世界,这主要是因为我获得了像Reaction这样的FP平台的经验,并在https://blog.ploeh.dk/之类的博客上阅读了这些经验。作为一名主要的命令式程序员,这是一个有趣的转变,但我仍然在努力摸索自己的脚步。 我有点厌倦了这样使用string.IsNullOrEmpty。很多时候,我发现自己在代码中使用 这样的表达式 _ = string.IsNu ..
发布时间:2022-04-20 14:07:20 C#/.NET

通过(一元)JOIN和FMAP进行终止检查替换

我使用的是大小类型,并且有一个类型化术语的替换函数,该函数用于终止检查我是否直接给出定义,但如果我通过(一元)联接和FMAP将其分解,则不会。 {-# OPTIONS --sized-types #-} module Subst where open import Size 要显示问题,只需有单位和就足够了。我的数据类型为Trie和Term,并且我在Term内部使用Term同域 ..
发布时间:2022-04-20 14:04:09 其他开发

《哈斯克尔与普里蒂》中的单曲

我的问题是,Haskell中的单体是否真的保持了Haskell的纯净,如果是的话,又是如何保持的。我经常读到关于副作用是如何不纯的,但有用的程序(例如I/O)需要副作用。在接下来的一句话中,哈斯克尔对此的解决方案是单体。然后,人们在某种程度上解释了单药,但并没有真正说明它们如何解决副作用问题。 我见过this和this,我对答案的解释实际上是我自己读到的--IO单元格的操作和操作不是I/O本 ..
发布时间:2022-04-20 13:58:50 其他开发

为什么验证会违反单一律?

onSO解释了为什么像scalaz、cat(Scala)或Arrow(Kotlin)这样的验证不能是Monad。 据我所知,这是因为他们根据应用函数器对Monad进行了建模,并且将验证的期望行为作为应用(集合所有无效)与将验证作为Monad的期望行为(序列验证和在第一个无效时快速失败)不同。因此,当您希望快速失败时,需要将验证转换为任一验证(这是一个单体)。 在https://groups ..
发布时间:2022-04-20 13:55:12 其他开发

&>&>操作员做什么?

我正在学习哈斯克尔的Monad。 我读了here关于Monad的很好的解释,我觉得对>>=绑定运算符和Monad有了解(不是全部,但我是刚刚开始的)。 在我老师的幻灯片上,我发现了这个: class Monad m where (>>=) :: m a -> (a -> m b) -> m b -- "bind" (>>) ..
发布时间:2022-04-20 13:51:47 其他开发

阅读器单体可以做什么是应用程序功能不能做的?

阅读http://learnyouahaskell.com/functors-applicative-functors-and-monoids#applicative-functors后,我可以提供一个将函数用作应用函数器的示例: 假设res是一个有4个参数的函数,而fa、fb、fc、fd都是只接受一个参数的函数。那么,如果我没有记错的话,这个实用的表达是: f fa fb ..
发布时间:2022-04-20 13:45:47 其他开发

Monad定义中的样板代码

由于Functor-Applicative-Monad Proposal,Monad是应用类的子类,而应用类又是函数子类。从数学上讲,这似乎是一个明智的选择,我对此没有任何问题。 然而,令我恼火的是,即使fmap和pure和的相应定律无论如何都是由单子定律固定的,也需要写下函数式和应用实例。事实上,在上面的链接提案中,它们自己写道:&您只需添加以下代码即可从Monad派生这些实例: ..
发布时间:2022-04-20 13:41:58 其他开发

函数者和单子之间的区别是什么?

这里有类似的问题,但它们与特定的编程语言有关,我正在寻找概念级别的答案。 据我所知,函数器本质上是不变的容器,它公开派生另一个函数器的map()API。哪项添加使将特定的函数器称为单体成为可能? 据我所知,每个单子都是函子,但并不是每个函子都是单子。 推荐答案 (请注意,这将是对范畴理论概念的简化解释) 函数器 函数器是从一组值a到另一组值a -> b的函数。对于编 ..
发布时间:2022-04-20 13:38:52 其他开发

Java 8 是否缺少 OptionalBoolean?

作为可选的原始版本a>*,Java 1.8 提供 OptionalInt、OptionalLong 和 OptionalDouble. 但我找不到等效的 OptionalBoolean 类. 是否有任何技术原因反对使用 OptionalBoolean? *可选可能有也可能没有值,用作null的替代. 解决方案 这句话解释了拥有原始流背后的注意事项.我假设同样适用于原始 O ..
发布时间:2022-01-19 17:40:55 Java开发

do 块中的返回类型

我正在尝试理解 Haskell 中的 Monads,在我无数次代码实验中,我遇到了这个问题: f2 = 做返回“达" 而且它不想在编译时出现关于类型的巨大错误.我认为唯一重要的部分是: (Monad m0) 没有因使用 return' 而产生的实例类型变量“m0"不明确 然后我将代码更改为: f2 = 做返回 "da" :: IO [字符] 而且效果非常好.但是当我试图搞砸一点并将 ..
发布时间:2022-01-19 15:20:41 其他开发

如果你违反了单子法则,你会发生什么?

编译器或库中更“原生"的部分(IO 或可以访问黑魔法和实现的函数)是否对这些定律做出假设?打破它们会导致不可能的事情发生吗? 或者它们只是表达了一种编程模式——即,唯一会因为破坏它们而惹恼的人是那些使用你的代码并且没想到你这么粗心的人? 解决方案 编译器不对规律做任何假设,但是,如果你的实例不遵守规律,它的行为就不会像一个 monad——它会做奇怪的事情,否则会在用户看来无法正常工作 ..
发布时间:2022-01-17 08:33:22 其他开发

如何在 Haskell 中使用 SmallCheck?

我正在尝试使用 SmallCheck 来测试 Haskell 程序,但我不明白如何使用库来测试我自己的数据类型.显然,我需要使用 Test.SmallCheck.Series.但是,我发现它的文档非常混乱.我对食谱风格的解决方案和逻辑(单子?)结构的可理解解释都感兴趣.以下是我的一些问题(所有相关问题): 如果我有一个数据类型 data Person = SnowWhite |Dwarf I ..
发布时间:2022-01-14 17:29:53 其他开发