如何在此函数中将 Traversable 类型解释为 Applicative?

问题描述

我正在尝试使用 haskell 类,并且我发现(至少一些)Traversable 数据结构也是 Applicative

当您查看 Traversable 的定义时,您会发现它可以使用 sequenceA 函数进行定义:

sequenceA :: (Traversable t,Applicative f) => t (f a) -> f (t a)

由于 list 既是 Traversable 又是 Applicative,我确实尝试在列表列表中使用 sequenceA:

-- this thing ...
sequenceA [[0,1],[7,8,9]]

-- is evaluated as [[0,7],[0,8],9],[1,9]]

我得到了 2 个列表的笛卡尔积!

它甚至适用于更多的列表。


这是怎么回事?

这个函数行为背后的直觉是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)