假设我有两个类型:
t1 <- [t| (Functor f) => (a -> b) -> f a -> f b |]
t2 <- [t| (Int -> Char) -> [Int] -> [Char] |]
是否有可能在模板Haskell中确定t1
的表达式也可以是t2
的表达式?(不需要自己实现类型统一)
正如jberryman在注释中所说,您可以生成强制类型检查器统一这两种类型的代码。但是,您不能锁定到类型检查器中亲自检查并对结果进行分支。在TH展开阶段,您无法正确访问完整的类型检查器环境。