我已經聲明瞭以下結構的遞歸類型值構造:我能有一個名爲「/」「
data Path = GET | POST | Slash Path String
我很想,去年值構造重命名爲/
使我可以綴它的可愛表情像GET /"controller"/"action"
但是,如果我嘗試這樣做:
import Prelude hiding ((/))
infixr 5/
data Path = GET | POST | Path/String
...然後我得到這個:
Path.hs:4:30: parse error on input `/'
如果我將/
替換爲:/
或以:
開頭的任何其他特殊字符序列,那些相同的三行編譯就好了。
那麼,有沒有什麼辦法可以命名我的價值構造函數/
?我知道,我可以將其命名爲Slash
然後聲明一個單獨的函數:
(/) :: Path -> String -> Path
(/) = Slash
...但是,這不會讓我的模式匹配,如:
request :: Path -> String
request path = case path of GET /"hello" -> "Hello!"
GET /"goodbye" -> "Goodbye!"
看到`:/`遍佈我的代碼會讓我想知道它爲什麼如此失望。 – zinglon 2010-12-03 19:37:17
@zinglon:Hrhrhrhrhr。幸運的是,運營商中允許使用幾乎所有非字母數字的Unicode字形,所以表情符號的可能性幾乎是無限的。尤其是像這樣的父母使用它的前綴,想象一下所有的移位 - JIS垃圾你可以這樣做! – 2010-12-03 19:55:20