根据约束区分类型

时间:2017-03-17 02:44:56

标签: haskell type-constraints type-families

首先,我将解释我的问题的简化版本,然后是实际问题。

考虑max(+)

的类型
max :: Ord a => a -> a -> a
(+) :: Num a => a -> a -> a 

请注意,它们的约束条件不同。我想写一个F型家庭,所以我有类似的东西:

f :: a -> F a

那样

f max

有不同的类型
f (+)

现在实际问题。

鉴于(来自我的polydata包裹):

data Poly (c :: * -> Constraint) where
  Poly :: { getPoly :: (forall a. c a => a) } -> Poly c

我希望能够在不明确指定约束的情况下编写mkPoly (+)

我想也许我可以创建一个将类型转换为约束的类型族,因为它是一个相当机械的过程。

这是我的问题背后的背景,但我认为问一个更简单的问题将是一个良好的开端。

0 个答案:

没有答案