是否可以比较两种类型,如果一种可以从另一种分配?

Pet*_*lák 16 haskell types type-conversion template-haskell

假设我有两种类型:

t1 <- [t| (Functor f) => (a -> b) -> f a -> f b |]
t2 <- [t| (Int -> Char) -> [Int] -> [Char] |]
Run Code Online (Sandbox Code Playgroud)

是否有可能在Template Haskell中确定表达式t1也可以是t2?(我自己没有实现类型统一.)

scl*_*clv 1

正如 jberryman 在评论中所说,您可以生成代码来强制类型检查器统一这两种类型。但是,您无法锁定类型检查器来实际检查自己并根据结果进行分支。在 TH 扩展阶段,您根本没有正确访问完整类型检查器环境的权限。