问题描述
我正在尝试使用 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 (将#修改为@)