gpt4 book ai didi

list - 指定位置可以采用的元素的情况下,生成所有可能列表的列表的函数

转载 作者:行者123 更新时间:2023-12-02 10:23:25 27 4
gpt4 key购买 nike

在 Haskell 中,我正在寻找一个输入 [[a]] -> [[a]] 的函数,它生成一个列表,例如 [[1,1,1 ], [1,1,2], [1,1,3], [1,2,1], [1,2,2], [1,2,3]] 给定参数 [[1],[1,2],[1,2,3]]。鉴于每个元素可以采用某些特定值,该函数应该生成所有可能列表的列表。因此,对于上面的示例,在所有可能的列表中,第一个元素可以采用 [1] 中的任何值,第二个元素可以采用 [1,2] 中的任何值,第三个元素可以采用 [1,2] 中的任何值可以采用任何[1,2,3]。每个列表的大小应与作为参数传入的列表中列表的数量相同(在上述情况下为 3,因为 [[1], [1,2], [ 中有三个列表) 1,2,3]])。

为了实现此目的,我研究了 replicateM 函数,但这假设每个元素可以采用相同数量的值。是否有一个函数可以指定不同的元素可以采用不同的值?如果没有,实现此目的的函数会是什么样子?

最佳答案

这个函数是

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

专门用于列表,即(f ~ [], t ~ []),产生

sequenceA :: [[a]] -> [[a]]

> sequenceA [[1], [1,2], [1,2,3]]
[[1,1,1],[1,1,2],[1,1,3],[1,2,1],[1,2,2],[1,2,3]]

关于list - 指定位置可以采用的元素的情况下,生成所有可能列表的列表的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60021226/

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