Haskell定义了类型

Mad*_*ote 2 haskell types

研究Haskell的第一原理.Haskell的绝对初学者.如果:

data A
data B
func :: A -> B
func = undefined
Run Code Online (Sandbox Code Playgroud)

实际功能是什么?虽然工作量很大,但效果很好(也谢谢你),但我又被卡住了.A - > B是否表示两种不同的类型,如'String' - >'Char'?只是试图绕过它.

Wil*_*sem 6

不,(具体)类型以大写字母开头.所以A -> B意味着类型AB你已经用你的data A = ...表达式定义(这里没有定义),例如:

data A = Foo | Bar Int | Qux String A
Run Code Online (Sandbox Code Playgroud)

如果签名包含具有小写的标识符,则它是类型变量.举例来说foo :: a -> b,装置ab可以由任何类型的被substuted.所以foo是可以的功能A -> B,而且A -> Int,Char -> BChar -> Int.

您还可以添加类型约束的签名来限制其用于实例的类型ab可以使用.像foo :: (Show a, Num b) => a -> b限制ab,这样,应该有一个存在instance Show ainstance Num b对类型ab这样foo的在这些类型的定义.