我正在 PureScript 中使用以下代数数据类型...
data Extended a = Infinite | Finite a
v1 = Finite 11
v2 = Infinite
我无法弄清楚如何与“无限”案例进行模式匹配,因为它似乎v2
具有 type forall t140. Extended t140
。我假设 t140 是编译器自动填充的某种占位符。 v1 的类型是Extended Int
. 因此,如果我设置一个 Eq 实例来比较 Extended 的值,则 Infinite 大小写不匹配...
instance extendedEq :: (Eq a) => Eq (Extended a) where
eq (Finite a) (Finite b) = eq a b
eq Infinite Infinite = true
eq Infinite _ = false
eq _ Infinite = false
所以当我尝试运行时,v2 == v2
我得到了错误......
No type class instance was found for Prelude.Eq (Extended _0)
这是有道理的,因为我想它正在尝试为 t140 找到一个 Eq 实例。
所以我的问题是,如何在 Infinite 类型上进行模式匹配?