我想创建一个新的积分类型,它被限制在一定范围内.我试过了:
data PitchClass = PC Int deriving (Ord, Eq, Show)
instance Bounded PitchClass where
minBound = PC 0
maxBound = PC 11
Run Code Online (Sandbox Code Playgroud)
然而,我想要的是如果有的话会失败
PC 12
Run Code Online (Sandbox Code Playgroud)
要么
PC (-1)
Run Code Online (Sandbox Code Playgroud)
被尝试了.
对于您希望在创建新类型的情况下放置约束的情况的一般方法,其中值构造函数不从模块导出,而是返回类型实例和执行约束检查的函数被导出?