截至大學一個大型項目寫在Haskell一個簡單的自定義語言的解釋的一部分,我想打印一些東西來幫助我,我的追求寫這個東西的清單。映射秀自定義數據類型
有一個自定義數據類型
data Prog = Prog [Func]
deriving (Show, Read)
,當我嘗試打印這個前衛的一個實例,在這個函數的最後一行
interpret :: Prog -> Vars -> String -> MaybeDebug -> IO()
interpret prog vars entry _ = do
putStrLn "The interpreter isn't written yet. Better get onto that!"
putStrLn "\n\n"
putStrLn (show prog)
putStrLn "\n\n"
putStrLn (show vars)
putStrLn "\n\n"
putStrLn (show entry)
putStrLn "\n\n"
putStrLn (map show [func | func <- prog, (func_name func) == entry])
我收到錯誤「無法匹配預計類型「字符」與實際的類型「字符串」。
我一直在嘗試了一段時間來解決問題是在這裏。爲什麼提的字符,列表理解返回funcs列表?
好的謝謝,這是非常有道理的。但是,現在Haskell抱怨說它不能與實際類型'Prog'匹配預期類型'[t0]'。這是一個我認爲我通過引入地圖顯示來修復的問題,但它好像只是掩蓋了它。對於這個窘境,你碰巧也有一個同樣令人驚訝的簡單解釋嗎? – nebffa 2013-04-08 03:38:59
更新了可能的修復程序。 – 2013-04-08 03:44:49
嘿,夥計非常感謝。你的解釋非常清楚,現在有道理。 – nebffa 2013-04-08 04:23:35