我想创建一个新的整数类型,它是有限的一定范围内。我曾尝试:如何创建一定范围内的类型
data PitchClass = PC Int deriving (Ord, Eq, Show)
instance Bounded PitchClass where
minBound = PC 0
maxBound = PC 11
但是,我想要的是什么,如果是这样
PC 12
或
PC (-1)
试图将失败。
是一种情况的一般方法,您希望在创建新的类型时创建新的类型,其中值构造函数不是从模块中导出的,而是返回该类型的实例并执行约束检查的函数出口?