首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GHC-api和类型检查类约束

GHC-api和类型检查类约束
EN

Stack Overflow用户
提问于 2012-06-08 23:03:01
回答 1查看 158关注 0票数 4

我正在尝试使用ghc-api构建一个简单的类似于ghci的控制台。我已经可以使用exprType来提取表达式的Type并计算它们了,有没有一种简单的方法来检查表达式的类型是否有一个给定类的实例?

编辑:似乎我正在寻找的函数需要一个InstEnv,但我不知道在哪里可以找到它。

EN

回答 1

Stack Overflow用户

发布于 2012-06-09 09:42:34

isInstance方法可能会执行您所需的操作。

ghci中的示例:

代码语言:javascript
复制
> :set -XTemplateHaskell
> import Language.Haskell.TH
> $(stringE . show =<< (isInstance ''Functor . (: []) =<< [t| [] |]))
"True"
> $(stringE . show =<< (isInstance ''Show . (: []) =<< [t| Maybe Int |]))
"True"
$(stringE . show =<< (isInstance ''Show . (: []) =<< [t| (Int -> Bool) |]))
"False"

它的类型sig是

代码语言:javascript
复制
isInstance :: Name -> [Type] -> Q Bool

即为类指定一个名称(使用''或使用mkName函数检索),然后传递类型以检查类(如果类是多参数类型类,则需要多个类型)。然后,它将在Q monad中返回True或False。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10951360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档