问题标签 [arrows]

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 投票
2 回答
442 浏览

haskell - 为什么 Control.Arrow 中没有 Kleisli 的 Functor 实例?

在尝试熟悉Control.Arrow时,我注意到Kleisli 新类型似乎承认 Functor 实例,例如:

没有提供此实例是否有原因?它是否作为孤立实例存在于某个包中?

0 投票
1 回答
167 浏览

haskell - 来自 Free 和 MonadFree 的箭头

如何创建ArrowfromFreeMonadFree

MonadFree 包含 2 个参数mf,但Kleisli没有空间可插入f,所以我们不能使用Kleisli箭头 for MonadFree

据我了解,需要创建一个类、一个新类型和一个实例,如下所示:

但看起来实现并不简单

0 投票
2 回答
3007 浏览

jquery - Fancybox - 将上一个/下一个箭头保持在同一个位置

我正在使用 Fancybox 作为图片库。

图像具有不同的宽度,因此箭头会根据图像宽度四处移动(向内或向外)。

我的客户希望箭头留在一个地方,这样您就可以轻松地点击一组,而无需来回移动来点击。我在这里查看了所有 Fancybox 问题,但没有找到答案。我已经尝试更改 CSS,但无法使其正常工作。

画廊在这里

0 投票
4 回答
3186 浏览

haskell - 如何在单子中使用 Kleisli 箭头?

在 HaskellControl.Arrow文档中,它谈到了 Kleisli 箭头与单子的关系,但对我来说如何使用它并不明显。我有一个我认为适合箭头的功能,除了它涉及 IO monad,所以我认为 Kleisli 箭头可能会有所帮助。

采用以下函数,它返回目录的原始文件名和修改后的文件名对。

如果我必须把它画出来,它会是这样的:

在此处输入图像描述

我认为它可以从使用 Kleisli 箭头中受益,但我不知道如何。任何人都可以提供指导吗?

0 投票
2 回答
654 浏览

r - R:帮助需要改进从起点到终点更改箭头颜色的功能

我在 R 中有以下函数可以绘制改变颜色的箭头:

这个功能我有2个问题..

问题1:箭头向上移动时以红色开始,以蓝色结束,向下移动时以蓝色开始,以红色结束。我实际上需要箭头始终以蓝色开始,并始终以红色结束。这个简化的示例数据说明了这个问题:

这创建了以下情节:

阴谋

问题 2:脚本只允许从左到右的箭头。尝试在另一个方向绘制箭头时,我收到一条错误消息。例如,在绘制此示例数据时:

我得到以下情节:

在此处输入图像描述

以及以下错误消息:

关于如何解决这些问题的任何想法?提前谢谢了!

0 投票
1 回答
94 浏览

haskell - Wiring/ArrowLooping every element in a list with every other element in the list

I asked a question about this earlier but I don't think I really knew what I was asking. I think I understand my problem slightly better now.

I'm using netwire, an arrowized FRP library, and having some trouble getting this arrowloop implemented.

I have

Such that g basically ties every element in the given list with the list of every other element using f...um...this is hard to really say using words so I'll give an example with a list of length 4:

(I have a helper function selects :: [a] -> [(a,[a])], that turns something like [x,y,z] into [(x, [y,z]), (y, [x,z]), (x, [x,y])])

Now...I've compiled this hard-coded version and this already works and delivers exactly the results that I wanted mostly. It runs without any funky <> issues.

Does anyone know if it's possible to do this "exact" thing...but with a general number of list elements?


For reference, my implementation of selects comes from Simon Marlow,

0 投票
2 回答
734 浏览

haskell - 将 Monad 表示法转换为 Arrow 表示法

我试图理解箭头符号,特别是它如何与 Monads 一起工作。使用 Monads,我可以定义以下内容:

并且gJust 10

我该如何做上述但使用箭头符号?

0 投票
1 回答
261 浏览

haskell - 是否可以使用 ghc 箭头符号重写此示例?

我重新发明了某种“状态箭头”:

似乎这个定义如我所愿:至少测试 3 5产量

请注意,这种行为故意不同于像这样包裹在箭头中的普通 State monad:

作为testKleisli 3 5返回

关键是人们可以分别操纵某些“并行计算分支”中的状态,然后以某种方式合并它。

我不熟悉箭头符号,但在这里很不方便:看起来它为每次计算都创建了新的“分支”。是否可以使用箭头符号重写“bar”函数(来自测试的 where 子句)?

0 投票
1 回答
539 浏览

haskell - 以图表形式查看 Haskell 箭头的工具

Haskell 箭头通常被解释为表示计算的有向无环图 (DAG)。我正在寻找可以使用这种关系来帮助使用 Arrows 进行编程的工具或库代码。

从箭头到图形,工具可以帮助可视化箭头代码。由于代码对应于计算的 DAG,因此显示计算节点和输出到输入边缘的视觉表示是自然的。一个工具可以创建一个图形,以便使用标准图形工具进行查看和操作。

是否存在增强任意计算箭头类的箭头转换器,捕获 >>> 和 *** 操作提供的结构,并可以将计算作为基本箭头操作的图来检查?

从图到箭头,假设有一个 DAG,其节点是箭头操作。是否有一种工具可以从中构造一个计算整个 DAG 的箭头?

我在 Google 上搜索了很多关于 Haskell Arrows 的文章,但没有找到这样的可视化工具。我错过了什么?也许没有我想象的那么自然。

0 投票
0 回答
431 浏览

haskell - Haskell:以电路为例了解箭头和单子

我试图通过编写一些我需要的东西来理解单子和箭头把我的头绕过去:

所以想法是你有一个函数,它接受并返回一个类似的状态(a -> s -> (b, s)),但是我们修改它,而不是返回一个输出/状态元组,我们返回一个输出/X 元组,其中 X 与我们的初始函数的类型相同。所以它有点像(a -> (b, a -> (b, ...)))。我最初试图做一些类似于 State monad 的东西,但不是返回 state,而是返回与它本身相同的函数,状态部分应用(因此状态和要应用的函数保持耦合在一起)。

所以我想也许这只是 State monad 所做的事情,但我想要的用例之一是能够将多个有状态函数链接在一起,每个函数都有自己的状态,独立于其他函数。我还没有想出一种方法来以一种优雅的方式将多个独立的类型函数链接在一起(s -> a -> (b, s))(s' -> b -> (c, s'))这不会导致返回的状态是一些丑陋的元组序列,就像(s''', (s'', (s', s)))你做的更多的链一样,所以这让我觉得也许这比状态单子更复杂。

我还阅读了关于用电路隐喻描述的箭头以及用于流处理的箭头,这符合我的设想。我看到有一个 ArrowLoop,但是当我花了一段时间试图弄清楚它似乎更多地与巧妙地使用惰性而不是处理更新状态有关。然后我还读到 IO monad 使用了一些类型系统的诡计来不可避免,这感觉就像我用 Stateful 完成的一样;一方面, Stateful 的类型不编码其内部状态的类型,因此很难(不可能?)推断execStateful. 另一方面,我想不出任何有意义的绑定运算符。

所以我不太确定我在做什么。我认为它至少是一个函子,因为 fmap 只是在电路末端组成一个任意函数是有道理的,确保内部状态管理保持不变。我几乎确信自己 bind 可以用同样的方式定义,但每当我试图把这个想法具体化时,它就会崩溃。任何人都可以阐明我正在使用的东西吗?这是一些一般的单子还是箭头?一个特定的单子或箭头?

此外,使用这种方法是否有任何明显的问题或改进?我希望内部状态能够使用 ST monad,因为我设想内部状态由昂贵的就地操作组成。但我并不真正了解各种抽象来了解我的设计是否可扩展。

编辑:我需要做的一件事是确保不能引用原始的 Stateful 函数,因为它会引用旧状态而不是新更新的状态,我不知道该怎么做。本质上,runStateful 只能在有状态数据类型上使用一次,然后您需要确保下次运行它时使用返回的Stateful a b而不是原始的。内部管道可以很容易地防止意外发生,但我不知道如何使它成为不可能。