我正在尝试实现一种延迟构造非确定性有限自动机 (NFA) 的方法。 我几年前在 F# 中做过这件事,现在想在利用Monoid类型类的同时尝试使用 Haskell。{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-} module NFA ...
我正在尝试实现一种延迟构造非确定性有限自动机 (NFA) 的方法。 我几年前在 F# 中做过这件事,现在想在利用Monoid类型类的同时尝试使用 Haskell。{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-} module NFA ...
在使用 Alternative Alt 的 Monoid 和 Semigroup 实例中。 为什么没有它我们不能写实例? 如果我们可以这样写,那么我们可以在函数中用 (Monoid (fa), Applicative f) 替换 Alternative 吗? ...
我对 Maybe Int 和 Maybe String 是否都是 Haskell 中的幺半群感到有些困惑,因为我真的不知道你可以将哪些函数应用到具有中性元素和关联性规则的幺半群方面? 有人可以帮帮我吗? ...
我想实现一个名为 ComplexNumber 的自定义数据类型,如下所示: data ComplexNumber a = C (a,a) 现在我想实现 Monoid 变量并定义二进制 mempty Element 和 mappend ,如下所示: 但这并没有成功,因此试图找出原因并遇到了 Semi ...
我正忙于阅读 Bartosz Milewski 为程序员编写的类别理论书,并且在将幺半群描述为一个集合和将幺半群描述为一个类别之间移动时,我正在努力描述非恒等态射。 我知道当在一个集合 的上下文中 查看一个幺半群(例如一个字符串)时,我们有兴趣描述利用“附加”特征的各种函数,例如一 ...
我最近一直在试验幺半群和分布,我想我发现了一些有趣的东西(在我的回答中描述)——这些是已知的结构吗? (我一直无法在网上找到对它们的任何参考,而且我认为我没有错过一些它们会荒谬的原因) 如果以前不知道,它们对我以外的任何人来说是否有用或有趣? 引导我到这里的问题是: 如果您将产品换成 c ...
我有一种类型来描述校准后放射性碳日期概率分布。 细节和背景对于这个问题并不重要:它归结为_calPDFDens中每一年在_calPDFCals中的一个概率值: data CalPDF = CalPDF { -- | Sample identifier, e.g. a lab number ...
有一次,我以为我了解 Monad。 然而,当我试图将我对代码的理解与理论联系起来时,我发现自己仍然不清楚。 所以这里是: 第 1 部分。这是流行的教育 SO 链接a-monad-is-just-a-monoid-in-the-category-of-endofunctors-whats-the-p ...
我想我已经*部分*理解了幺半群。 但我还有一个问题。 在这种情况下,我不知道 Haskell 想从我这里得到什么。 为什么我不能链接我的 monad? 代码:data Result a = Result a | Err String | Empty instance Semigroup (Resu ...
我一直在努力寻找解决方案,所以我希望有更多 Algebird 经验的人可以提供帮助! 我有一个 stream 我正在使用 Algebird 聚合的事件,其中每个事件都代表执行某些任务的尝试。 考虑以下数据结构来表示每次尝试: 我正在从 stream 汇总这些尝试,并且不能保证执行任务的尝试会成功。 ...
我的数据类型Pair定义为 data Pair a b = Pair a b 我想让它成为幺半群。 这是我的定义。 instance (Monoid a,Monoid b) => Monoid (Pair a b) where mempty = Pair mempty mempty ...
我正在通过编写一个向音乐目录发出 Web 请求的应用程序来练习“真实世界”的 Haskell。 我可以使用可选参数(如title 、 artist 、 year任意组合调用像https://example.com/search这样的端点。 例如,以下任何组合都是有效的: 我可以使用req以友好的 ...
我在复合模式上观看了这个视频,其中主要示例是如何使用模式作为一种手段,从描述待办事项列表的树结构中生成 HTML 代码,其中每个项目又可以是待办事项列表,这似乎很方便测试台,所以这里是目标 HTML:[ ] Main <ul> <li>[ ] 1.</li> ...
似乎 LinkedList 构造函数不在 scope 中? 为什么? 编译器错误: 我搜索了一个解决方案,似乎我应该使用“映射”而不是构造函数。 这非常令人困惑。 我没有在任何地方定义任何 Monoid 类型类。 你能解释为什么mappened而不是构造函数吗? Monoid函数mappened ...
我想我可能偶然发现了一个通用的,尽管有些退化的幺半群动作。 伪哈斯克尔:instance (Monoid m, Monoid n) => Act m n where act mempty x = x -- let's pretend that we can use `mempty` ...
在 haskell IO 类型中有 Monoid 的实例: 如果我有三个共享某个状态的操作,并通过副作用改变彼此的行为,从 IO 类型的角度来看,这可能会导致违反关联律: (a1 mappend a2) mappend a3 /= a1 mappend (a2 mappend a3) 例 ...
Haskell 中的base库在Data.Semigroup具有以下类型同义词: type ArgMin a b = Min (Arg a b) type ArgMax a b = Max (Arg a b) 以下是黑线鳕的链接: ArgMin和ArgMax 这两种类型的同义词的目的是什 ...
在这个(非常有趣的)演讲中,演讲者提出了一个问题: float/std::min 幺半群的 e 值是多少。 换句话说:由标准 C++ 浮点数和 std::min 操作组成的幺半群的单位元素是什么? 演讲者说答案是“有趣的”。 我认为std::numeric_limits<floa ...
在学校,我的任务是编写一个函数,将数字附加到列表的左侧,如果它们是偶数的话。 类型签名如下: 我的回答是下面的一段代码 Haskell 可以编译我的代码,但它不能正常工作。 经过一些实验,我将mempty切换为pure : 哪个有效。 但为什么 ? 不应该pure == mempty吗 ...
在 Haskell 中,我们有一个有趣的事实,即任何类型构造函数f :: * -> *同时是Functor和Contravariant在其类型参数中是幻影的: 另一种Contravariant是,对于某些x ,每个同时是Functor s 和Contravariant类型构造函数自然同构于 ...