Haskell函数返回整数
我如何编写一个返回Integer的函数?
即
f True = 1
f False =0
f 1 = 1
f 2.30 = 2
类型a -> Integer
的唯一函数将是常量函数。 这是一个由类型的参数性保证的自由定理(由于Haskell的一些不完善的角落,所以模仿一些欺骗)。
这是一个这样的功能的例子:
f :: a -> Integer
f _ = 1
一般来说,没有办法做到这一点,而且这也不是可取的,但是您提到的以及其他一些案例可以通过丑陋的黑客获得:
f :: Enum n => n -> Integer
f x = toInteger (fromEnum x)
作为一般规则,最好简单地假装Enum
类不存在,因为它设计得非常糟糕,并且其一些实例表现不佳。
上一篇: Haskell function returning Integer
下一篇: Haskell: iterate in State, how to force the behaviour I want?