gpt4 book ai didi

Haskell:如何判断类型是否是类的实例?

转载 作者:行者123 更新时间:2023-12-02 10:08:49 26 4
gpt4 key购买 nike

我想创建一个 Template Haskell 函数,以便:

$(isInstanceOf ''Read ''SomeType)
如果 SomeTypeRead 的实例,则

将返回 True,否则返回 False

我尝试查看 reify 的结果,我想我正在寻找 ClassI 构造函数的内容,但文档有些缺乏,我'我无法理解我需要什么。有人可以提供有关在哪里查找创建上述函数所需的数据的指导吗?

最佳答案

模板 Haskell 已经提供 a function几乎就是你想要的。它从 2.5 版本开始就存在,在此之前我根本不知道有任何方法可以查找实例。

不同之处在于,现有的 isClassInstance 函数采用类的 Name - 这是您从 ''Read 等内容中获得的内容>--而是一个用于查找实例的Type。这可能更有意义,因为使用 Name 没有明显的方法来检查需要类型参数的实例。例如,您无法直接检查 [Int] 是否具有 Show 实例,或者 Either String 是否是 >Monad 实例。

请注意,Type 几乎可以像使用引号构造 Name 一样容易,例如您可以编写类似 $(isInstanceOf ''Monad [t| Either String |]) 的内容。

鉴于上述情况,您所要做的就是进行一些杂耍,以从拼接返回有用的值,无论您想要什么。

关于Haskell:如何判断类型是否是类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8696408/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com