2
它是合法的Haskell的代数数据类型有在声明常数值?换句话说,我可以定义是这样的:常量在Haskell代数数据类型
data HttpStatusCodes = BadRequest "Bad request" 400
| NotAuthorized "Not authorized" 401
| -- ...
我试图从规范看着办吧,但语法不是很清楚,我。
它是合法的Haskell的代数数据类型有在声明常数值?换句话说,我可以定义是这样的:常量在Haskell代数数据类型
data HttpStatusCodes = BadRequest "Bad request" 400
| NotAuthorized "Not authorized" 401
| -- ...
我试图从规范看着办吧,但语法不是很清楚,我。
不,你不能做到这一点(数据类型是类型,不数据)。相反,你可以做到以下几点:
data HTTPStatus = HTTPStatus Int String
badRequest, notAuthorized, notFound :: HTTPStatus
badRequest = HTTPStatus 400 "Bad Request"
notAuthorized = HTTPStatus 401 "Not Authorized"
notFound = HTTPStatus 404 "Not Found"
,或者类似:
data HTTPStatus = BadRequest | NotFound
code :: HTTPStatus -> Int
code BadRequest = 400
code NotFound = 404
message :: HTTPStatus -> String
message BadRequest = "Bad Request"
message NotFound = "Not Found"
不,这是不合法的。它也没有意义;你想做什么? – shachaf
昨天晚上发布了这个问题后,再想一想,我相信我正在努力去做@Zoidberg的回答。 – Ralph