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