微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决类型定义不是Haskell必需的吗?

| 即使没有类型声明,Haskell代码又如何工作?     

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。