在许多关于 Haskell 的文章中,他们说它允许在编译时而不是运行时进行一些检查。所以,我想实现最简单的检查——只允许对大于零的整数调用函数。我该怎么做?
最佳答案
module Positive (toPositive, Positive(unPositive)) where
newtype Positive = Positive { unPositive :: Int }
toPositive :: Int -> Maybe Positive
toPositive n = if (n < 0) then Nothing else Just (Positive n)
上面的模块没有导出构造函数,所以唯一的方法是构建类型为
Positive
的值是供应toPositive
使用正整数,然后您可以使用 unPositive
展开访问实际值。然后,您可以使用以下方法编写一个仅接受正整数的函数:
positiveInputsOnly :: Positive -> ...
关于haskell - 正整数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11910143/