这是我在List comprehension上一直在研究的问题。我知道它应该通过递归解决,但我不确定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)]]
答案 0 :(得分:1)
好的,让我们一步一步让你到那里
也许你已经看过这个评论了,但是这里有最重要的一步,但是:
Copy Bundle Resources
注意两个列表构造函数对应的两个案例 - 这是典型的,你错过了第二个案例。
现在你只需要:
RewriteBase /
RewriteRule ^tags/(.*)$ /tag/$1 [L,R=301]
应该很容易我猜你得到了 - 以防万一,答案是:
list [] = [[]]
list (x:xs) = [(x,c) : ys | c <- ???, ys <- list xs ]