Haskell 函数的类型

Haskell 函数的类型,haskell,types,Haskell,Types,我在Haskell教程中看到此函数: factorial :: (Integral a) => a -> a 我的问题是,我为什么要用它来代替这个: factorial :: Int->Int 这是因为在第一种情况下,我们可以使用各种类型的数字,而在第二种情况下,我们只能使用Int?这个答案是对这个问题的综合评论 您的解释是正确的,除了一个细节:该类型意味着您可以使用任何类型的整数(即,作为整数的实例的任何类型)。例如,factorial0.5将不起作用,正如factor

我在Haskell教程中看到此函数:

factorial :: (Integral a) => a -> a 
我的问题是,我为什么要用它来代替这个:

factorial :: Int->Int
这是因为在第一种情况下,我们可以使用各种类型的数字,而在第二种情况下,我们只能使用
Int

这个答案是对这个问题的综合评论


您的解释是正确的,除了一个细节:该类型意味着您可以使用任何类型的整数(即,作为
整数的实例的任何类型)。例如,
factorial0.5
将不起作用,正如factorial函数所预期的那样。

Yes。就是这样。您可能想使用
整数
至少一个细节:该类型意味着您可以使用任何类型的整数(即,作为
整数
实例的任何类型)。例如,
factorial0.5
不起作用。那么,如果我用(numa)代替(integrala),factorial0.5会起作用吗?@paulo_ferreira,当你这样做并测试它时,会发生什么?你能找出原因吗?