问题标签 [monoids]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - 在haskell中读取行直到非空字符串
我正在尝试从 Haskell 中的输入中读取行,直到找到非空行。实际上,我知道如何简单地使用以下代码来做到这一点:
测试(我输入了两个空行,然后是“foo”):
但是,为了锻炼,我试图使用 Monoids(http://learnyouahaskell.com/functors-applicative-functors-and-monoids#monoids)来实现这一点,试图模仿 First/getFirst Monoids(见链接) .
我首先在满足我需要的列表上创建了一个 Monoid(连接只保留第一个参数):
它适用于无限的字符串列表(由于懒惰):
但是,我无法让它在 IO Monad 中工作。我尝试了以下方法:
哪个具有正确的类型:
然而,Haskell 一直想在将整个列表交给mconcat
...之前评估整个列表。有没有办法在 Monoid/Monad 范围内导航时保持懒惰?
sml - 如何在标准 ML 中表示多态列表幺半群
我最近在使用标准 ML 中的幺半群。签名很容易写:
简单的幺半群也是如此,例如整数加法幺半群:
但是我被困在为更高种类的类型定义一个幺半群,例如list
. 当然,这不会编译:
经过一番搜索,我找到了以下基于仿函数的解决方案:
我的问题是是否存在声明通用列表幺半群的替代方法,理想情况下不需要functor
声明。当试图声明一个列表幺半群时,显然没有必要知道列表的包含类型。
c# - 这个签名是什么{零:α;附加:α -> β -> α;} 姓名?
我有 Monoid 和 Builder 接口:
并想实现从 Monoid 到 Builder 的转换算法。我试图这样做,并创建了这样的东西:
但在实际任务中,我需要可以将项目累积到该项目列表的构建器,以及具有相同累积原理的其他构建器。我的 Builders 必须实现下一个接口:
而且我需要有可能从 { zero, append } 签名创建构建器。像这样:
我针对新情况实施了下一个 BuilderMakerFor:
一切都很好,除了一点:我不知道如何命名 X。
名字叫 Monoid。
什么是
姓名?
haskell - 为什么'Control.Applicative.Const'没有'Alternative'实例
有一个仿函数Monoid a => Monoid (Const a b)
的实例Const
来自Control.Applicative
。还有一个例子Monoid m => Applicative (Const m)
。
因此,我希望还有一个Monoid m => Alternative (Const m)
与 for 相一致的实例Monoid
。这只是一个应该修复的遗漏,还是有更深层次的原因?
haskell - foldMap 采用错误类型的参数?
以下是 Learn You a Haskell 中的一些示例:
测试它:
of的第一个参数F.foldable
是一个返回Monoid的函数,但是Num不是Monoid的子类,所以(+)在这里肯定是不合格的吧?但从测试来看,它似乎很合适。
这里z
有点神秘,它应该是一个 Monoid,但具体是什么?
haskell - 为什么 Haskell 的仿函数上没有幺半群的类型类?
我承认这个问题有点不具体,但我想知道为什么我从来没有在 Haskell 的仿函数上偶然发现一个类型类。我是否只是错过了它,这种缺席是否有充分的理由,还是完全是由于历史原因?恕我直言,下面的继承图看起来有点奇怪,没有右上角:
scala - Scalaz `Tag.apply`:它是如何工作的?
嗨,我正在学习 Advanced Scala 书,但我在理解 scalaz 源代码中的这段代码时遇到了一些麻烦:
它如何工作?a.asInstanceOf[A @@ T]
应该因 ClassCastException 而失败,不是吗?
一个使用示例是:
在这种情况下a
是 Int 如何将其转换为@@[Int, Multiplication]
( Tagged[Int, Multiplication]
)
谢谢您的帮助。
xml - 箭头一次添加一个元素
这个问题是关于 HXT 的,但我想它通常适用于概念
ArrowPlus
。考虑以下程序:
你能告诉我会保存test.xml
什么吗?我的期望:
我的逻辑:箭头bar
复制其所有输入并添加一个“条”元素(this
是标识箭头的别名):
因此,结果bar >>> bar >>> bar
应该是三个 'bar' 元素(请注意,这eelem "bar" >>> eelem "bar"
只会产生一个 'bar' 元素,因为箭头mkelem
家族忽略了它们的输入(尽管它仍然可以用来生成它们的内容)并且只输出新创建的元素) .
说了这么多,我介绍test.xml
一下程序执行后的内容:
问题:
是什么
<//>
?为什么有 7 个“条形”元素而不是 3 个?这种重复的原因是什么?
为什么当我替换
bar >>> bar >>> bar
为none >>> bar >>> bar >>> bar
我得到:
none
零箭头在哪里。我们在这里处理箭头上的幺半群,对吧?
none
(≡ zeroArrow
) 应该是它的标识,所以它应该是这样的:
none <+> eelem "bar"
它产生一个 'bar' 元素,随后的调用应该添加另外两个元素。但是我们什么都没有!
- 如何编写
bar
一次添加一个“条形”元素的正确版本的箭头?
很抱歉问了 4 个问题,但我想它们是密切相关的,所以应该不是问题。
haskell - 如何为我的类型制作 Monoid 实例?
我有以下类型:
另外,我有一个功能:
我可以将此功能用于mappend
.
我不明白,在我的情况下如何实现 Monoid 接口。