Haskell JSON解析器改进

时间:2018-05-07 16:59:08

标签: json parsing haskell functional-programming

对于我上一学期的一门课程,我们的任务是实现一个喷出格式化HTML的JSON解析器。我最终实现了它,我觉得它更像是一种迭代的方式而不是功能性的方式。这是我遇到的主要代码段:

stringToTokens (x:xs)
            .....
            | x == '\"' = StringLiteral (parseStringToken xs) : stringToTokens (advancePastString xs)
            | startsNumeric x = Numeric (processNumeric (x:xs) takeWhile) : stringToTokens (processNumeric xs dropWhile)
            | startsKeyword x = Keyword (processKeyword (x:xs) take) : stringToTokens (processKeyword (x:xs) drop)
            .....
            | otherwise = stringToTokens xs

....
advancePastString :: String -> String
advancePastString (x:xs)
            | x == '\"' = xs
            | x == '\\' = advancePastString (tail xs)
            | otherwise = advancePastString xs

关于我如何处理这个问题的问题在于,感觉好像我已经采用了如何用过程语言实现它,并且只是用递归和删除函数替换了循环。虽然这确实有用,但我想知道处理这个问题会有什么更为惯用的功能方式。

0 个答案:

没有答案