小编Tom*_*Tom的帖子

我可以有一个名为"/"的值构造函数吗?

我已经声明了一个具有以下结构的递归数据类型:

data Path = GET | POST | Slash Path String
Run Code Online (Sandbox Code Playgroud)

我真的想重命名最后一个值构造函数,/以便我可以在可爱的表达式中添加它GET /"controller"/"action".但是,如果我尝试这样做:

import Prelude hiding ((/))
infixr 5 /
data Path = GET | POST | Path / String
Run Code Online (Sandbox Code Playgroud)

...然后我明白了:

Path.hs:4:30: parse error on input `/'
Run Code Online (Sandbox Code Playgroud)

如果我取代那些相同的三条线编译就好/:/或其他特殊字符序列开头:.

那么,有什么方法可以命名我的值构造函数/吗?我知道我可以命名它Slash然后声明一个单独的函数:

(/) :: Path -> String -> Path 
(/) = Slash
Run Code Online (Sandbox Code Playgroud)

......但这不会让我模式匹配,如:

request :: Path -> String
request path = case path of GET /"hello" -> "Hello!"
                            GET …
Run Code Online (Sandbox Code Playgroud)

syntax haskell

6
推荐指数
2
解决办法
1589
查看次数

标签 统计

haskell ×1

syntax ×1