将Markdown转换为HTML符号

时间:2014-12-02 06:51:08

标签: haskell

我正在Haskell中编写一个程序,将markdown转换为HTML,现在我正在尝试编写基本函数来转换主符号,似乎遇到了我的函数问题,错误代码模糊地说“测试”。 hs:15:28:输入'&'解析错误“以下是我的内容:

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

任何帮助解释我做错了什么都会非常感激 感谢名单

2 个答案:

答案 0 :(得分:2)

双引号用于字符串,例如“abcd”

单引号用于字符,例如'a'

这在Haskell-'abcd'中绝对没有任何意义,编译器会抱怨。

此外,一旦你解决了这个问题,我想指出这个

"&lt;"  : (symbol ys)

将创建字符串列表,您可能不应该这样做....(++)将字符串合并为字符串。

答案 1 :(得分: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)