我希望在Haskell中生成2个列表的笛卡尔积,但我无法弄清楚如何做到这一点.笛卡尔积给出了列表元素的所有组合:
xs = [1,2,3]
ys = [4,5,6]
cartProd :: [a] -> [b] -> [(a,b)]
cartProd xs ys ==> [(1,4),(1,5),(1,6),(2,4),(2,5),(2,6),(3,4),(3,5),(3,6)]
Run Code Online (Sandbox Code Playgroud)
这不是一个实际的家庭作业问题,与任何此类问题无关,但解决这个问题的方式可能有助于我坚持下去.
如果我有数据类型说:
data Color = Red | Yellow | Green
Run Code Online (Sandbox Code Playgroud)
有没有办法可以将其转换为[Color]类型列表获取所有可能的值?[红色,黄色,绿色]
也许这是一个完整的反模式?