0
这是我一直在通过列表理解工作的一个问题。我知道它应该用递归来解决,但我不确定Haskell语法对于递归情况如何工作。Haskell嵌套列表生成器
这里的问题:
给出一个字符串列表,输出这些字符串的所有可能的组合和3个变量[C,U,I]。例如,
list ["vC", "vU", "vI"] == [[("vC",C),("vU",C),("vI",C)],[("vC",I),("vU",C),("vI",C)],[("vC",U),("vU",C),("vI",C)] ,[("vC",C),("vU",I),("vI",C)],[("vC",I),("vU",I),("vI",C)],[("vC",U),("vU",I),("vI",C)] ,[("vC",C),("vU",U),("vI",C)],[("vC",I),("vU",U),("vI",C)],[("vC",U),("vU",U),("vI",C)] ,[("vC",C),("vU",C),("vI",I)],[("vC",I),("vU",C),("vI",I)],[("vC",U),("vU",C),("vI",I)] ,[("vC",C),("vU",I),("vI",I)],[("vC",I),("vU",I),("vI",I)],[("vC",U),("vU",I),("vI",I)] ,[("vC",C),("vU",U),("vI",I)],[("vC",I),("vU",U),("vI",I)],[("vC",U),("vU",U),("vI",I)] ,[("vC",C),("vU",C),("vI",U)],[("vC",I),("vU",C),("vI",U)],[("vC",U),("vU",C),("vI",U)] ,[("vC",C),("vU",I),("vI",U)],[("vC",I),("vU",I),("vI",U)],[("vC",U),("vU",I),("vI",U)] ,[("vC",C),("vU",U),("vI",U)],[("vC",I),("vU",U),("vI",U)],[("vC",U),("vU",U),("vI",U)]]
编辑:所以这是我到目前为止已经试过。
list :: [String] -> [Dict]
list [] = [[]]
list xs = [[(x,y)] | y<-[C,U,I], x <- xs]
然而,当我用三个变量运行测试用例,它只输出:
[[("vC",C)],[("vU",C)],[("vI",C)],[("vC",U)],[("vU",U)],[("vI",U)],[("vC",I)],[("vU",I)],[("vI",I)]]
问题是什么?你尝试了什么?为什么它不工作? –
你能告诉我们你已经尝试了什么,这似乎是功课/锻炼!请表现出尽可能多的努力,因为你会期望有人回答这个问题,写出答案。一个好的开始将阅读[信息页](https://stackoverflow.com/tags/haskell/info)=>部分**免费Haskell编程书籍** – epsilonhalbe
编辑原始帖子添加我已经尝试过远,为什么它失败了。感谢您的资源。 – lancer