相关疑难解决方法(0)

是否有可能为同一个构造函数有不同的行为?

我正在写一个SQL解释器.我需要在编译时区分不正确的表达式和运行时错误.

我会给你一个应该是格式良好的例子,但可能在运行时失败.

SELECT $ [ColumnName "first_name" `AS` "name"] `FROM` TABLE "people.csv" `WHERE` (ColumnName "age" `Gte` LiteralInt 40)
Run Code Online (Sandbox Code Playgroud)

我想专注于表达:

(ColumnName "age" `Gte` LiteralInt 40)
Run Code Online (Sandbox Code Playgroud)

这应该通过类型检查器.但是,说"年龄"并不包含可以表达为a的东西LiteralInt.

所以我想要Gte产生类似的东西IO Bool(暂不考虑异常处理).

但我并不总是需要Gte制作一个IO Bool.如果我有这样的事情:

(LiteralInt 40 `Gte` LiteralInt 10)我只需要一个Bool.或类似的东西: (LiteralInt 40 `Gte` LiteralBool True)需要在编译时失败.

所以,我一直在玩弄数据系列和GADT,并且已经落下了许多死胡同,如果我解释它们就会混淆这种情况.

我的问题是否有意义,如果是这样,我可以通过一个探索的途径来解决问题?

haskell dependent-type

2
推荐指数
1
解决办法
100
查看次数

标签 统计

dependent-type ×1

haskell ×1