由于 lambda 演算,Haskell 比许多语言更具数学性,但我认为域对于数字是不完整的:例如,我们有Integer
and ,但没有or , or作为域。这有时会使函数不安全,而编译器可能已经捕获了类型错误。例如:mod仅在运行时
输出。但我们可以有类似的东西;类似守卫、间隔或其他数据类型的东西……在游戏中,我希望我的角色在其生命中拥有一个正数。或者从 0 到 100,不下,不上。当他被击中时,我需要打电话给丑陋的人。甚至 C 也有和。Float
Positive
Negative
[1..5]
5
0
*** Exception: divide by zero
mod :: Integral a => a -> a -> a
mod :: Integral a, a != 0 => a -> a -> a
positive x = if x > 0 then x else 0
signed
unsigned
这是一个弱点还是他们没有“间隔”域的原因?有解决这个问题的包吗?