Haskell函数返回Integer

时间:2015-02-25 15:13:28

标签: haskell

如何编写将所有内容返回给Integer的函数?

f True = 1
 f False =0
 f 1 = 1
 f 2.30 = 2

2 个答案:

答案 0 :(得分:14)

类型a -> Integer的唯一函数将是常量函数。这是一个自由定理由类型的参数性保证(由于Haskell的一些不健全的角落,模数有些捏造)。

以下是此类功能的一个示例:

f :: a -> Integer
f _ = 1

答案 1 :(得分:2)

一般情况下没有办法做到这一点,这根本不可取,但你提到的案例和其他一些案例都可以通过丑陋的黑客获得:

f :: Enum n => n -> Integer
f x = toInteger (fromEnum x)

作为一般规则,最好只是假装Enum类不存在,因为它的设计非常糟糕,而且它的一些实例表现不佳。