0
我是Haskell的新手,作爲一種學習方式(第一個項目),我將代碼從Tcl移植到Haskell。該項目是一個特定於域的查詢語言,通過語義層轉換爲SQL查詢。現在,隨着解析器的語言限制的查詢語言,對運營商類似,這段代碼實際上在Haskell似乎更傻比Tcl中做了:-)關於Haskell代碼片段的建議?
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邏輯連接器),但我相信它可以變得更漂亮。
我的猜測是,你可能想添加一些更多的打字,以確保你不會結束語法不正確的SQL? – didierc
如果要這樣做,你可能想要做的事情是「Haskell方式」是使用像parsec這樣的解析器將DSL轉換爲具體的數據類型,然後從中生成SQL查詢。這將是安全的做事方式,即使它需要更多的代碼。當然,你的代碼可能比Tcl中的代碼長,但它肯定會更安全,更健壯,並且如果正確地完成了更多的擴展。 – bheklilr
爲什麼我試圖將我的代碼移植到Haskell當然有很多原因。 ;-)現在,我想要做的是以某種方式壓縮第1-3行。 –