((b -> a) -> f b -> r) -> r我认为Coyoneda应该使用更高级别的类型来模拟存在型,但是我不能构造这种类型的值coyoneda辅助函数不键入check,因为对于术语k f tx,更高级别的类型变量b将转义其作用域。
但是,我不能想出另一种方法来实现coyoneda。有可能吗?
我已经把我需要的所有东西都放在一个又大又丑的Context模块中,为了避免把十个模块传递给我所有的函数,一个模块就足够了。我有一个通过tcp接收命令的函数:let rec recvCmds (type a) (module Ctx : Context with type chan = a) nodeid chan =
此代码运行良好,如预期的那样:instance (Eq a) => Eq (Heh a) where然而,这却产生了一个错误:instance (Eq a) => Eq (Heh a) where -- Error: Couldn't match expected type ‘a1’ with actual type ‘a’