我正在使用 Haskell 并尝试编写以下内容:
data Scale s = Scale s s
但是,我想做到这一点s
必须是 Num 类型类的内容,例如 Int 或 Double。使用 Haskell 和 GHC 可以做到这一点吗?
Yes:
{-# LANGUAGE GADTs #-}
data Scale s where
Scale :: Num s => s -> s -> Scale s
然而,这通常被认为是最佳实践not去做这个。相反,将Num
仅对使用的函数进行约束Scale
s and need the Num
约束。放松这些约束可以让你在适当的时候暂时打破不变量;例如希望有一个是很常见的Functor
这种类型的实例,如果您像上面那样约束构造函数,这是不可能的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)