【发布时间】:2019-03-22 07:28:08
【问题描述】:
在this article Function Monoids 中引入了 C# 代码和 Haskell 类型定义。
如果
b是一个幺半群,那么函数a -> b就是一个幺半群。这意味着 您可以将相同类型的两个函数组合在一起。在一个 面向对象的上下文,这意味着你可以结合两种方法 只要返回类型相同,签名就变成一种方法 形成一个幺半群。概括
虽然上面的 C# 代码只是一个示例,但一般规则是 任何返回幺半群的函数本身就是一个幺半群。在哈斯克尔, 此规则在标准库中阐明:
instance Monoid b => Monoid (a -> b)这意味着对于任何幺半群
b,函数a -> b也是 (自动)一个幺半群。
问题是 C# 中的示例对“GUID”过于具体,我不知道作者在代码中试图做什么,而 Haskell 类型定义只是类型定义。
什么是 JavaScript 中实现这个 Function Monoids 的示例代码?
cf)
Why is instance Monoid b => Monoid (a -> b) in base?
【问题讨论】:
-
鉴于 javascript 没有足够复杂的类型系统,因此很难翻译。 “成为一个幺半群”不是可以表示为运行时值的东西。如果您对此感兴趣,我建议您学习 Haskell 以了解本文的含义。
-
我不同意。要在 JavaScript 中实现 Monoid,根本不需要类型系统。蒙达斯也是如此。
-
C# 示例根本不针对 GUID。文章的重点是
Combine函数,即使没有任何 C# 知识,您也应该能够将其翻译成 javascript。CountPrimes和CountLetters仅用作用作Combine参数的函数示例。 -
@tbookq 我正在编写 cmets,因为我还没有回答你的问题“什么是 JavaScript 中的示例代码来实现这个 Function Monoids?”。我正在写 cmets 来建议改进您的问题的方法,以便我可以通过有用且易于理解的帖子正确回答它。
-
@tbookq 请edit您的问题以包括一个幺半群的任意实现作为示例(并展示您的知识水平),我会写一个适当的答案。我不想写一个对你没用的答案,但你需要提供更多信息。是你希望别人帮助他。
标签: javascript functional-programming monoids