gpt4 book ai didi

haskell - 箭呢?

转载 作者:行者123 更新时间:2023-12-03 15:21:40 25 4
gpt4 key购买 nike

阅读有关 Haskell 的各种类别主题类的各种教程,我们发现诸如 Monoid 之类的内容。 , Functor , Monad等等 - 所有这些都有几十个实例。但由于某种原因,当我们到达 Arrow ,只有两个实例:函数和单子(monad)。在这两种情况下,使用 Arrow与直接使用底层事物相比,实例没有那么强大和困难。

有没有人有任何有趣的箭头示例?我敢肯定一定有一些,但我从来没有遇到过任何关于它们的文章......

最佳答案

我喜欢想Arrow s 作为可组合的有向无环图。例如,类型的箭头:

SomeArrow (a, b, c) (d, e, f)

...您可以将其视为具有 a 类型的三个传入边的图, b , 和 c和三个 d 类型的出边, e , 和 f .

使用这种解释, Arrow 的类别组合操作s 就像图的水平串联,将它们的边连接在一起:
(.) :: SomeArrow b c -> SomeArrow a b -> Some Arrow a c

...在哪里 a , b , 和 c可能是它们自己的元组。同样, id只是将所有传入边转发到传出边的恒等图:
id :: SomeArrow a a

另一个键操作是 (***)这就像图的垂直连接:
(***) :: Arrow a b -> Arrow c d -> Arrow (a, c) (b, d)

您可以将其视为并排放置两个图,将它们的输入边和输出边结合起来。

所以 Arrow通常在使用类型化有向无环图时出现。但是,您通常看不到它们的原因是因为大多数人在心理上将图与无类型和高性能数据结构联系起来。

关于haskell - 箭呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22871648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com