我在Haskell教程上看到了这个函数:
factorial :: (Integral a) => a -> a
我的问题是为什么我应该使用它而不是:
factorial :: Int->Int
这是因为第一个我们可以使用每种类型的数字,而在第二个我们只能使用Int
?
答案 0 :(得分:2)
这个答案是对问题的评论的混搭。
您的解释是正确的,除了一个细节:该类型意味着您可以使用任何类型的整数数字(即,Integer
的任何类型的实例)。例如,factorial 0.5
将不起作用,正如因子函数所预期的那样。