2014-12-02 74 views
0

我在Haskell中編寫了一個將markdown轉換爲HTML的程序,現在我試圖編寫基本函數來轉換主要符號,並且似乎遇到了與我的函數有關的問題,錯誤代碼是含糊的指出「testing.hs:15:28:解析輸入‘&’錯誤」下面是我有:將Markdown轉換爲HTML符號

symbol x " "  = "" 
symbol x (y:ys) 
    | x == '&' = '&' : (symbol ys) 
    | x == '<' = '&lt;' : (symbol ys) 
    | x == '>' = '&rt;' : (symbol ys) 
    | otherwise = y : (symbol ys) 

解釋任何幫助,我在做什麼錯,將不勝感激 感謝名單

回答

2

有些事情你應該糾正:使用String而不是Char代表&amp;。您遞歸調用symbol尚未完成。你缺少一些參數。

symbol :: [Char] -> [Char] -> [Char] 
symbol x " "  = "" 
symbol x (y:ys) 
    | x == "&" = "&amp;" ++ (symbol x ys) 
    | x == "<" = "&lt;" ++ (symbol x ys) 
    | x == ">" = "&rt;" ++ (symbol x ys) 
    | otherwise = y : (symbol x ys) 
2

雙引號用於字符串,如「abcd」

單引號是用於字符,如'a'

這意味着在Haskell-'abcd'中絕對沒有,並且編譯器會抱怨。

而且,一旦你解決這個問題,我想指出,這

"&lt;" : (symbol ys) 

將創建的字符串,你可能不等於做到的名單......(++)concatinates串成字符串。

+0

感謝您指出了這一點,我總是迷路哈斯克爾其很難想象在功能上時,我的主要語言是Java和C++,其實我有++在他們前面不知道爲什麼我刪除它 – Abstract3000 2014-12-02 07:25:41