我有一个可插入的运行时类型检查器,它支持参数但没有临时多态性,因为没有编译步骤,并且一旦类型检查器被停用,类型信息就会被删除。
现在我最近想出了用显式类型来具体化类型类的想法,这样我就可以在不必将底层机制完全合并到类型检查器中的情况下获得它们的一些优势:
data Functor f = Functor {fmap :: forall a b. (a -> b) -> f a -> f b}
mapList = Functor map
fmap (mapList) (+1) [1,2,3]
似乎类型类可以用 rank-2 类型模拟,至少在类型级别,因为当然仍然没有静态调度。
我的假设是否正确,并且由于我是 Haskell 新手,我的显式仿函数类型是否比直接使用有任何优势map
?