monoids相关内容

为什么“和[]"是真和“或[]"是假的

为什么空列表上的“and"返回true,是否暗示空列表为True?抱歉,我无法正确阅读和理解这一点,所以请纠正我.谢谢. 前奏>和 []真的前奏>或者 []错误的 解决方案 在数学中,谈论二元运算通常很有用,例如 &&, ||、+、* 等具有身份.标识是一个值 e 使得以下属性适用于某些通用二进制操作 e x = x×e = x 对于我上面列出的操作符,它们是可交换的,这意味着 x ..
发布时间:2021-12-14 12:21:12 其他开发

monad 只是一个内函子范畴中的幺半群,有什么问题?

以下是谁先说的? monad 只是一个幺半群内函子的范畴,是什么问题? 另外一个不太重要的问题是,这是真的吗?如果是,您能否给出解释(希望没有太多 Haskell 经验的人能够理解)? 解决方案 这个特别的措辞出自 James Iry,来自他极具娱乐性的编程语言的简要、不完整和大部分错误的历史,他虚构地将其归功于菲利普·瓦德勒. 原文引用自桑德斯·麦克莱恩 (Saunde ..
发布时间:2021-12-14 11:34:54 其他开发

ZipList Monoid haskell

GHC前奏中列表的默认monoid是串联. [1,2,3][4,5,6] 变为 [1,2,3] ++ [4,5,6] ,因此成为 [1,2,3,4,5,6] 我想编写一个ZipList Monoid实例,其行为如下: [14,25,36] 假设我使用的是sum monoid,结果为 [5,7,9] .请注意,这的行为类似于 zipWith(+) 可能它的行 ..
发布时间:2021-05-13 20:33:35 其他开发

如何在haskell中为该树实现monoid接口?

请原谅我的用语,我的思想仍在弯曲. 树: 数据Ftree a =空|叶a |分支(Ftree a)(Ftree a)派生(显示) 我有几个问题: 如果不能将 Ftree 设置为 Empty ,则由于没有身份值,它将不再是 Monoid . p> 如何用此树实现 mappend ?你能把两棵树随意地嫁接在一起吗? 对于二叉搜索树,您是否必须内省两个树中的某些元素以确保 ..
发布时间:2021-05-09 20:22:18 其他开发

新类型的Haskell Monoid实例问题

我正在尝试定义一个实例: newtype Join a = Join { getJoin :: a -> Bool } deriving Generic instance Monoid (Join a) where f g = ??? mempty = ??? 目标是,如果列表中的所有函数均为true,则foldMap Join函数应返回True,否则,则返回f ..
发布时间:2020-11-22 07:41:10 其他开发

为什么单调律和适用法告诉我们的是同一件事?

不久前,我了解到Monoidal是表示Applicative的另一种方式.关于 Typeclassopedia : 有一个有趣的问题 (Tricky)证明从第一个练习[使用unit和(**)写下的pure和()以及相反的方法],常规的Applicative律和上述法律是等效的. 以下是这些类别和法律: -- A note from https://wiki.haskell ..
发布时间:2020-11-22 06:28:57 其他开发

Free Monoid和Monoid之间的主要区别是什么?

好像我很清楚地了解Haskell中的Monoid是什么,但是上次我听说了一个称为免费类半身像的东西. 什么是免费的半身像,它与一个半身像有什么关系? 您可以在Haskell中提供示例吗? 解决方案 在编程环境中,我通常将 free monoid 转换为[a].在有关针对程序员的类别理论的精彩文章系列中,,Bartosz Milewski将Haskell中的免费类人动物描述为列表 ..

monoid同态到底是什么?

我已经从 Monoid形态,产品和副产品,并且无法理解100%. 作者说(强调原文): length函数从String映射到Int ,同时保留 单体结构.这样的功能,可以将一个半身像映射到 另一个以这种保存方式被称为 monoid homomorphism .在 一般而言,对于Monoid M和N,同态f: M => N和所有值 x:M,y:M,以下等式成立: f(x |+| y ..

Scala中的高级类型

我正在阅读《 Scala中的函数编程》一书,在《 Monoids》一章中,他们讨论了一个看起来像这样的Monoid接口: trait Monoid[A] { def op(a1: A, a2: A): A def zero: A } 稍后,它们通过扩展此接口来定义特定的Monoid实例.例如, val intMonoid = new Monoid[Int] { ... } ..
发布时间:2020-06-18 18:45:46 其他开发

一次添加一个元素的箭头

这个问题与HXT有关,但我想它通常适用于 ArrowPlus 的概念。请考虑以下程序: module Main(主要),其中 导入Text.XML.HXT.Core 导入Control.Monad(无效) main :: IO() main = void $ runX $ root [] [foo] >> writeDocument [withIndent yes]“ t ..
发布时间:2020-06-06 19:35:14 其他开发

将Networkx图的边相乘的算法

所以我的问题是在用Networkx库实现的图中找到从一个节点到另一个节点(或同一节点)的最长路径. 我不想增加边缘的权重,而要乘以最大的结果.显然,每个节点仅传递一次或根本不传递. 例如,如果我要从节点1转到节点4,则最佳结果将是:2 x 14 x 34 x 58 图表示例 谢谢您的帮助! 解决方案 这可能有效: import networkx as nx ..
发布时间:2020-05-17 19:02:34 Python

一个monad只是endofunctors类别中的一个monoid,这是什么问题?

谁先说了以下话? 一个monad只是在 endofunctors的类别,这是什么 有问题吗? 还有一个不太重要的注解,这是真的吗?如果可以的话,您能给出一个解释(希望是一个没有太多Haskell经验的人可以理解的解释)? 解决方案 特别措辞是詹姆斯·伊里(James Iry)摘自他的极富娱乐性的 原始报价来自Saunders Mac Lane在《工作数学家的类别》中的分类,这是 ..
发布时间:2020-05-10 21:42:04 其他开发

在追加下保持IO懒

我可能一直认为Haskell比现在更加懒惰,但我想知道是否有办法让这两个世界最好...... Data.Monoid 和 Data.Semigroup 定义的两个变体First C>。 monoidal版本模拟最左边的非空值,而半群版本只是模拟最左边的值。 这适用于纯数值,但考虑不纯的值: x = putStrLn“x”>>返回42 y = putStrLn“y”>>返回1 ..
发布时间:2018-06-05 11:17:29 其他开发

为什么GHC不能为Monoid派生实例?

GHC有几个语言标志,例如 DeriveFunctor , DeriveDataTypeable 等,它们使得编译器能够生成派生除了Haskell 98中允许的类型类以外的其他类型的实例。对于像 Functor 之类的东西来说,这尤其有意义,其中该类的规则规定了明显的“自然”派生实例。 那为什么不为 Monoid ?对于任何具有单一数据构造函数的数据类型来说,似乎都是这样的: $ $ ..
发布时间:2018-06-05 10:55:59 其他开发