我有以下功能:哈斯克爾 - 非法字面型誤差函數定義
replace :: a -> Int -> [a] -> [a]
replace elem 0 x:xs = elem : xs
replace elem i x:xs = x ++ replace elem (i - 1) xs
而且GHCI告訴我,我的第一個定義有類型的錯誤非法的文字,特別是在文字0 。現在,我知道,如果我試圖替換列表中的任意項目,我不應該使用列表數據結構。這很好,因爲我正計劃在我能夠得到我想要的工作後儘快重構我的程序。至於編譯器的投訴,我不確定爲什麼Haskell認爲我試圖在這裏定義一個類型。任何幫助,將不勝感激。
在模式和'x:'而不是'x ++'中寫入'(x:xs)'而不是'x:xs'。我不知道它爲什麼會抱怨類型文字 - 當我編譯它時,我得到「解析模式中的錯誤:替換」,這是我所期望的。 – user2407038 2014-10-28 06:02:42
@ user2407038你的評論是一個答案,所以應該真正發佈。 – 2014-10-28 11:06:23