我想寫一個簡單的代碼來生成括號的所有組合。但我堅持一個簡單的類型錯誤。查找haskell中所有括號的組合?
balancedParens :: Int -> [String]
balancedParens n
| n==0 = []
| otherwise = placeParens 0 1 0 n [""]
where placeParens x lc rc n mlist
| lc == n = mlist
| rc == n = mlist
| lc < n = placeParens (x+1) (lc+1) rc n ((mlist !! x) ++ "L")
| rc < n = placeParens (x+1) lc (rc+1) n ((mlist !! x) ++ "R")
有很多錯誤,但最突出的是
Couldn't match type ‘Char’ with ‘[Char]’
Expected type: [[Char]]
Actual type: [Char]
In the first argument of ‘(!!)’, namely ‘mlist’
In the first argument of ‘(++)’, namely ‘(mlist !! x)’
失敗,模塊加載:無。
((mlist !! x)++「L」)是一個列表,爲什麼類型錯誤?它如何匹配[Char]?
'mlist'是字符串的列表,'mlist !! x'是一個字符串,'(mlist !! X)++ 「L」'也一個字符串。 –
你需要一個字符串列表,你有一個字符串,它是一個列表或[Char] – karakfa
你是指像[this]這樣的程序(http://ideone.com/UMKhiF)? –