monoids相关内容
为什么空列表上的“and"返回true,是否暗示空列表为True?抱歉,我无法正确阅读和理解这一点,所以请纠正我.谢谢. 前奏>和 []真的前奏>或者 []错误的 解决方案 在数学中,谈论二元运算通常很有用,例如 &&, ||、+、* 等具有身份.标识是一个值 e 使得以下属性适用于某些通用二进制操作 e x = x×e = x 对于我上面列出的操作符,它们是可交换的,这意味着 x
..
以下是谁先说的? monad 只是一个幺半群内函子的范畴,是什么问题? 另外一个不太重要的问题是,这是真的吗?如果是,您能否给出解释(希望没有太多 Haskell 经验的人能够理解)? 解决方案 这个特别的措辞出自 James Iry,来自他极具娱乐性的编程语言的简要、不完整和大部分错误的历史,他虚构地将其归功于菲利普·瓦德勒. 原文引用自桑德斯·麦克莱恩 (Saunde
..
实例 MonadPlus IO 是唯一的,因为 mzero 抛出: Prelude Control.Monad>零***例外:用户错误(mzero) 因此, MonadPlus IO 暗示它也旨在解决错误. 如果其他动作不抛出, mzero 显然可以用作标识元素: Prelude Control.Monad>mzero`mplus`返回00
..
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(+) 可能它的行
..
请原谅我的用语,我的思想仍在弯曲. 树: 数据Ftree a =空|叶a |分支(Ftree a)(Ftree a)派生(显示) 我有几个问题: 如果不能将 Ftree 设置为 Empty ,则由于没有身份值,它将不再是 Monoid . p> 如何用此树实现 mappend ?你能把两棵树随意地嫁接在一起吗? 对于二叉搜索树,您是否必须内省两个树中的某些元素以确保
..
我正在尝试定义一个实例: newtype Join a = Join { getJoin :: a -> Bool } deriving Generic instance Monoid (Join a) where f g = ??? mempty = ??? 目标是,如果列表中的所有函数均为true,则foldMap Join函数应返回True,否则,则返回f
..
不久前,我了解到Monoidal是表示Applicative的另一种方式.关于 Typeclassopedia : 有一个有趣的问题 (Tricky)证明从第一个练习[使用unit和(**)写下的pure和()以及相反的方法],常规的Applicative律和上述法律是等效的. 以下是这些类别和法律: -- A note from https://wiki.haskell
..
我在这里发现了一个类似的问题,问的几乎是同一件事,但不完全相同. 我的问题是如何将类型(a-> Bool)的函数列表组合为也是(a-> Bool)的一个函数. 例如. compose :: [(a -> Bool)] -> (a -> Bool) compose [] = **?** compose (x:xs) = x **?** compose xs 与此类似的问
..
这是我的代码.它允许使用Casbah创建类型安全的MongoDB查询 trait TypesafeQuery[ObjectType, BuildType] { def build: BuildType } trait TypesafeMongoQuery[ObjectType] extends TypesafeQuery[ObjectType, DBObject] case cl
..
我正在读一本带有以下内容的书: sealed trait Currency case object USD extends Currency ... other currency types case class Money(m: Map[Currency, BigDecimal]) { ... methods defined } 讨论继续将Money上的某些类型的操作识别为Mon
..
好像我很清楚地了解Haskell中的Monoid是什么,但是上次我听说了一个称为免费类半身像的东西. 什么是免费的半身像,它与一个半身像有什么关系? 您可以在Haskell中提供示例吗? 解决方案 在编程环境中,我通常将 free monoid 转换为[a].在有关针对程序员的类别理论的精彩文章系列中,,Bartosz Milewski将Haskell中的免费类人动物描述为列表
..
我已经从 Monoid形态,产品和副产品,并且无法理解100%. 作者说(强调原文): length函数从String映射到Int ,同时保留 单体结构.这样的功能,可以将一个半身像映射到 另一个以这种保存方式被称为 monoid homomorphism .在 一般而言,对于Monoid M和N,同态f: M => N和所有值 x:M,y:M,以下等式成立: f(x |+| y
..
我正在尝试将联合操作的Haskell整数集定义为 Monoid . module MyMonoid where import qualified Data.IntSet as S data MyMonoid = MyMonoid S.IntSet instance Monoid MyMonoid where mempty = MyMonoid S.empty MyMonoid
..
我正在阅读《 Scala中的函数编程》一书,在《 Monoids》一章中,他们讨论了一个看起来像这样的Monoid接口: trait Monoid[A] { def op(a1: A, a2: A): A def zero: A } 稍后,它们通过扩展此接口来定义特定的Monoid实例.例如, val intMonoid = new Monoid[Int] { ... }
..
这个问题与HXT有关,但我想它通常适用于 ArrowPlus 的概念。请考虑以下程序: module Main(主要),其中 导入Text.XML.HXT.Core 导入Control.Monad(无效) main :: IO() main = void $ runX $ root [] [foo] >> writeDocument [withIndent yes]“ t
..
我正在尝试使用HSpec和QuickCheck来验证Monoid的属性(关联性和标识元素).我将验证特定的实例,但想保留大多数代码的多态性.这是几个小时后我想到的: module Test where import Test.Hspec import Test.QuickCheck import Data.Monoid instance (Arbitrary a) => Arbitrar
..
所以我的问题是在用Networkx库实现的图中找到从一个节点到另一个节点(或同一节点)的最长路径. 我不想增加边缘的权重,而要乘以最大的结果.显然,每个节点仅传递一次或根本不传递. 例如,如果我要从节点1转到节点4,则最佳结果将是:2 x 14 x 34 x 58 图表示例 谢谢您的帮助! 解决方案 这可能有效: import networkx as nx
..
谁先说了以下话? 一个monad只是在 endofunctors的类别,这是什么 有问题吗? 还有一个不太重要的注解,这是真的吗?如果可以的话,您能给出一个解释(希望是一个没有太多Haskell经验的人可以理解的解释)? 解决方案 特别措辞是詹姆斯·伊里(James Iry)摘自他的极富娱乐性的 原始报价来自Saunders Mac Lane在《工作数学家的类别》中的分类,这是
..
我可能一直认为Haskell比现在更加懒惰,但我想知道是否有办法让这两个世界最好...... Data.Monoid 和 Data.Semigroup 定义的两个变体First C>。 monoidal版本模拟最左边的非空值,而半群版本只是模拟最左边的值。 这适用于纯数值,但考虑不纯的值: x = putStrLn“x”>>返回42 y = putStrLn“y”>>返回1
..
GHC有几个语言标志,例如 DeriveFunctor , DeriveDataTypeable 等,它们使得编译器能够生成派生除了Haskell 98中允许的类型类以外的其他类型的实例。对于像 Functor 之类的东西来说,这尤其有意义,其中该类的规则规定了明显的“自然”派生实例。 那为什么不为 Monoid ?对于任何具有单一数据构造函数的数据类型来说,似乎都是这样的: $ $
..