我有一個haskell問題。 putStrLn應該是一個[Char]或者一個String,儘管看起來我把它給了編譯器,他仍然抱怨。putStrLn,類型Char不匹配[Char]
*** Expression : putStrLn line
*** Term : line
*** Type : Char
*** Does not match : [Char]
,它指的是這樣的代碼:
getV::[[(Char,Float)]] -> IO()
getV [] = putStrLn ""
getV (x:xs) = do line <- getS x
putStrLn line <-- Complaining line
getV xs
getS::[(Char,Float)] -> String
getS [] = ""
getS ((c,f):str) = do a <- "(L" ++ [c] ++")" ++ getS str
return a
我做脫衣那麼一點點,但它應該是完全一樣的行爲。 getS返回一個字符串,該字符串是putStrLn的參數。那麼問題是什麼? :/
只有幾點格式化建議:你的代碼格式不正確,不能在GHC中運行。嘗試使用上面的行來排列每一行(所以'putStrLn line'的'p'就在'line < - getS x'的'l'的下面。另外,如果你有''''''''抱怨line'並且放棄了'<',所以這是一個法律意見,人們可以複製粘貼你的代碼。 – 2010-06-04 09:01:49
是的,你說的是事實:D我會更好下一次 – pullitnah 2010-06-04 09:06:11
這次爲什麼不更好?你總是可以回過頭去編輯你的問題!(另外,+ +1爲我帶着幽默感帶着你的挑逗感:)與你的Haskelling祝你好運!) – 2010-06-04 11:01:24