类型定义不是Haskell必需的吗?

| 即使没有类型声明,Haskell代码又如何工作?     
已邀请:
        注意:我假设您的意思是类型签名,因为如果删除诸如
type Foo = Bar
data X = Y
之类的类型定义,该代码将不再起作用(假设实际上是使用定义的类型)。 Haskell代码可以在没有类型签名的情况下工作,因为如果您未指定签名,则变量/函数的类型仅由编译器推断出来。用于进行此推断的算法是Hindley-Milner类型推断算法的一种变体。     
        因为通常可以从上下文中推断出类型。例如,函数
tail
的类型为ѭ3say,表示我们从一个列表转到另一个相同类型的列表。当您向该函数传递pass4ѭ时,就会知道另一个
String
是结果,因此实际上并不需要明确地说明这一点。因此,
(tail \"hello\")
的类型被称为String(或
[Char]
,这实际上是相同的)。     

要回复问题请先登录注册