类型级别统一和与封装类型匹配的值级别模式

时间:2015-01-20 20:23:54

标签: haskell pattern-matching unification

我正在尝试简化复合数据类型,但不知道最好的方法。到目前为止,这是我的代码:

data Init a b c d = Init a b c d

data Wrap a = WNil (Init a b c d)
            | WCons a (Wrap a)

我一直看到的问题可能很明显 - 我无法将预期结果类型的类型变量与封装的类型变量统一起来:

-- | Will fail to compile
unWrap :: Wrap a -> Init a b c d
unWrap (WNil x) = x
unWrap (WCons _ xs) = unWrap xs

我听说-XExistentialQuantification作为一种可能的解决方案被抛出,但我无法正常工作。有没有人知道该怎么做,除了将类型参数浮动到Wrap

0 个答案:

没有答案