关于一小段Haskell代码的建议?

时间:2014-07-21 20:18:32

标签: haskell functional-programming

我对Haskell很新,作为一种学习方式(第一个项目)我将代码从Tcl移植到Haskell。该项目是一种特定于域的查询语言,它通过语义层转换为SQL查询。现在,在语言的解析器中限制查询语言的运算符,在Haskell中类似的代码实际上似乎比在Tcl中更愚蠢: - )

type MatchOperator = [Char]

getOpJoiner :: MatchOperator -> String
getOpJoiner "!=" = " and "
getOpJoiner "!~" = " and "
getOpJoiner "!~~" = " and "
getOpJoiner _  = " or "  -- In reality, this can only be "=", "~", "~~" or "==" according to the parser

代码执行应该做的事情(根据使用的查询运算符返回语句的相应SQL逻辑连接符),但我确信它可以变得更漂亮。

1 个答案:

答案 0 :(得分:1)

如果您只想减少代码行,请尝试以下方法:

getOpJoiner :: MatchOperator -> String
getOpJoiner x
            | x `elem` ["!=","!~","!~~"] = " and "
            | otherwise = " or "

elem用于检查输入是否与列表中的任何字符串匹配。

此功能可行。但是,我认为最好投资@bheklilr建议的解决方案,因为他提到的原因。