haskell - 正整数类型

标签 haskell

在许多关于 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/

相关文章:

database - 如何将数据库连接传递给我的 http 处理程序?

haskell - `[ (x !! 0, x !! 1) | x <- mapM (const [' A', 'B' , 'C' ] ) [1..2], head x < head (tail x) ]` 是如何工作的?

algorithm - Haskell 中的动态编程内存

list - 根据字段子集的列表中的唯一元素

haskell Data.Aeson.Value 到文本

未评估 Haskell 类型系列应用程序

haskell - getModificationTime 返回类型不再是 System.ClockTime

haskell - monad 变压器和多个 monad 的堆叠

haskell - 如何更改参数的顺序?

haskell - 为什么 Haskell 9.0 的线性类型没有零,而 Idris 2 有?