小编Tre*_*bor的帖子

在 Haskell 中,是否有一种有效的方法来生成给定泛型(尤其是 monads)类型签名的函数?

我已经看到了“给定类型签名XXX,在 Haskell 中找到实现”形式的各种问题。因此很自然地会问这是否可以推广或算法化。一个类似的问题是here。然而,很明显,通常这项任务是不可能的。所以下一个问题是用一些通用性来换取实用性。

问题:如果所有类型签名都由刚性类型变量和一些约束组成,从固定集(例如Monad, Traversable, Foldable?)

一个典型的问题是(Monad m) => (m j -> [m d]) -> m [j] -> [m [d]],我使用[]代替 是(..Constraints t) => t为了方便。

haskell type-theory hindley-milner

5
推荐指数
1
解决办法
96
查看次数

允许类型角色覆盖

在 GHC Haskell 中,Map k v有一个类型角色声明k是名义上的。这是因为用户可以以其他coerce k方式使用具有相同表示但不同实例的另一种Ord类型,从而破坏不变量。

但是,我有一些Ord实例是继承的新类型。在这种情况下,unsafeCoerce似乎可以完成这项工作(如果有我不知道的微妙之处,请纠正我),但这完全关闭了强制类型检查,这让我彻夜难眠。在我的具体用例中,我有一个 type MyWrapper k,并且我希望能够声明一些新类型k1->k2作为安全强制转换的可接受类型,即使它是 的参数MyWrapper。这可能吗?还有哪些其他解决方法?

haskell types coercion ghc newtype

4
推荐指数
1
解决办法
62
查看次数

标签 统计

haskell ×2

coercion ×1

ghc ×1

hindley-milner ×1

newtype ×1

type-theory ×1

types ×1