问题标签 [category-theory]

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.

0 投票
1 回答
1121 浏览

haskell - Haskell:join 是如何自然转变的?

我可以将 Haskell 中的自然转换定义为:

并带有函数 k:

由于以下事实,满足自然条件:

h . fmap k==fmap k . h

List monadjoin函数的自然性条件可以用类似的方式证明吗?我很难理解如何joinconcat特别是,是一种自然的转变。

0 投票
1 回答
403 浏览

haskell - NonEmpty 不是 Comonad 吗?

为什么 semigroups 包中的 NonEmpty 列表也不是 comonad 类的实例?

0 投票
1 回答
938 浏览

haskell - 与 (Bool -> a) 同构的可表示函子

我想我会尝试有趣的Representable-functors包来定义一个MonadComonad实例为由给出的仿函数,data Pair a = Pair a a它可以由Bool;表示。正如我之前对 vector monad 问题的回答中提到的那样。

我注意到的第一件事是,要使我的类型成为 的实例Representable,我不仅应该定义tabulateand index,而且还要确保我的类型是Indexable, Distributive, Keyed, Apply,ApplicativeFunctortype 类的实例。好了,ok,index完成了的定义,可以使用fromIndexable<.>函数了;需要一个实例也就不足为奇了。不过,我对我的和的实例持怀疑态度。Apply<*>ApplicativeFunctorKeyedDistributive

我的mapWithKey定义借用了[]实例的定义Keyed:虽然我不明白为什么0每次迭代都使用它。我False对 的每个术语都使用了类似的方法Pair

当我通过定义MonadandComonad实例得出结论时,我发现Bool需要Semigroup定义 forExtendMonoid定义Comonad. 我遵循与同构的的Semigroup实例,并选择:Either(||)Falsemempty

那么,我Representable是否正确地、地道地满足了课堂的要求?

0 投票
1 回答
858 浏览

haskell - Functor 用于 (a -> b) -> (fa -> fb),什么是 (Category c) => cab -> c (fa) (fb)?

我想要一个函数来将纯函数映射到容器或通过它对应用程序/单子操作进行排序。对于纯映射,我们有

对于单子排序,我们有(来自 Data.Taversable)

这类似于

我们知道 (->) 和 (Kleisli m) 都是类别(和箭头)。于是自然而然地做出一个概括:

你知道有类似方法的 X 类吗?也许,在黑客攻击的某个地方?我试图 hoogle/hayoo 但没有找到任何合适的东西。

更新:

现在我更清楚我需要什么。Kleisli 箭头和 (->) 都是 ArrowApply 的实例,它与 Monad 一样强大。我想出了这个基于箭头的 Travesable 版本:

我可以只使用通常的基于 Applicative 的 Traversable,将 Identity 用于纯函数,但我不确定它是否好。将纯函数视为一元动作的特例是很奇怪的。将纯函数和单子动作解释为某些动作类(Category/Arrow/ArrowApply)的实例对我来说看起来更简单。

问题:你想完成实例[]吗?我对 ArrowApply vs Monad 的看法有什么意义吗?

0 投票
1 回答
543 浏览

javascript - 用于类别理论(或图形)图的 javascript 包?

我正在寻找一个可以帮助我编写类别理论图的 Javascript 包。基本上,在点之间创建带有标签和箭头的点(一个以上的箭头可以连接两个点,一个点可以连接到自身)。另外,能够指定线型(实线/虚线)。

具体来说,我想要一些可以自动为我布局元素的东西。

我看到了canviz,但显然它需要graphviz 来预渲染图表。我也看到了德古拉,但显然它不能从节点到自身绘制弧线。

0 投票
3 回答
1638 浏览

haskell - 从分类的角度来看,Haskell 的 monad 转换器是什么?

作为一名数学学生,当我在 Haskell 中了解 monad 时,我做的第一件事就是检查它们是否真的是我所知道的意义上的 monad。但后来我了解了单子变换器,而这些似乎并不是范畴论中研究的东西。

特别是我希望它们与分配律有关,但它们似乎真的不同:单子转换器预计适用于任意单子,而分配律是单子与特定其他单子之间的事务。

此外,查看 monad 转换器的常见示例,虽然MaybeT mm组合Maybe,但StateT m不是mwith的组合State

所以我的问题是分类语言中的单子转换器是什么?

0 投票
3 回答
1689 浏览

function - Scala——如何在非函数类型上使用函子?

在阅读此博客上对 Functor 的描述时:

https://hseeberger.wordpress.com/2010/11/25/introduction-to-category-theory-in-scala/

Functor 有一个通用定义和一个更具体的定义:

显然,这意味着 Functor 可以与 Function 对象之外的其他更高种类的类型一起使用。有人可以举个例子或解释如何或为什么或在什么情况下会做?也就是说,在 Scala 中 GenericFunctor 的另一个实现会是什么——它使用与 Function 不同的类型构造函数?谢谢!

编辑:

只是为了澄清:

澄清一下,根据我的理解,ListFunctor 在 GenericFunctor 中实现 1-arg fmap,而 repl 脚本中的代码调用 Trait Functor 中的 fmap,而 Trait Functor 又调用 fmap 实现(例如在 ListFunctor 中)。

这不会改变整体问题,只是认为它会帮助人们试图提供答案。提供的任何见解将不胜感激。

0 投票
8 回答
3382 浏览

haskell - 从分类的角度来看,FP 中的 monad 是什么?

每次有人承诺要“解释单子”时,我的兴趣都会被激起,但当所谓的“解释”是一长串例子被一些随口说“深奥背后的“数学理论”想法”是“在这一点上解释得太复杂了”。

现在我要求相反。我对范畴论有扎实的掌握,我不害怕图表追逐、米田引理或派生函子(实际上是范畴意义上的单子和附属词)。

有人能给我一个关于函数式编程中什么是 monad的清晰简洁的定义吗?例子越少越好:有时一个清晰的概念会说一百多个胆小的例子。尽管我并不挑剔,但 Haskell 作为一种演示语言会做得很好。

0 投票
2 回答
2642 浏览

scala - Option、Either 等上的 fold 和 Traversable 上的 fold 有什么关系?

Scalaz 提供了一个为各种 ADT 命名的方法,fold例如BooleanOption[_]、等。该方法基本上采用与给定 ADT 的所有可能情况相对应的函数。换句话说,如下所示的模式匹配:Validation[_, _]Either[_, _]

相当于:

一些例子:

同时,还有一个Traversable[_]类型同名的操作,遍历集合,对其元素进行一定的操作,并累加结果值。例如,

为什么这两个操作使用相同的名称 - fold/catamorphism?我看不出两者之间有任何相似之处/关系。我错过了什么?

0 投票
1 回答
149 浏览

scala - Scala中的逆变二元运算

对于一个非常基本的类别通用模型,我试图以逆变方式获得与一对对象相关联的态射。

我想以某种方式能够定义:

但是使 mor 成为 Obj 的方法的“明显”解决方案需要 Obj 额外由 Morphism 进行类型参数化。

实现这种事情的Scala方式是什么?