system-f

    19热度

    1回答

    如何系统地计算系统F中给定类型的居民人数? 假设以下限制: 所有居民终止,即,没有底部。 所有居民都没有副作用。 例如(使用Haskell语法): Bool具有两个居民。 (Bool, Bool)有四个居民。 Bool -> (Bool, Bool)有十六个居民。 forall a. a -> a有一个居民。 forall a. (a, a) -> (a, a)有四个居民。 forall a b.

    4热度

    1回答

    我不明白为什么这个方案是不是键式: type Test a = forall z. (a -> z) -> z cons :: a -> Test a cons = \a -> \p -> p a type Identity = forall x. x -> x t :: Identity t = \x -> x c :: Test Identity c = cons (t