研究Haskell的第一原理.Haskell的绝对初学者.如果:
data A
data B
func :: A -> B
func = undefined
Run Code Online (Sandbox Code Playgroud)
实际功能是什么?虽然工作量很大,但效果很好(也谢谢你),但我又被卡住了.A - > B是否表示两种不同的类型,如'String' - >'Char'?只是试图绕过它.
不,(具体)类型以大写字母开头.所以A -> B意味着类型A和B你已经用你的data A = ...表达式定义(这里没有定义),例如:
data A = Foo | Bar Int | Qux String A
Run Code Online (Sandbox Code Playgroud)
如果签名包含具有小写的标识符,则它是类型变量.举例来说foo :: a -> b,装置a和b可以由任何类型的被substuted.所以foo是可以的功能A -> B,而且A -> Int,Char -> B和Char -> Int.
您还可以添加类型约束的签名来限制其用于实例的类型a并b可以使用.像foo :: (Show a, Num b) => a -> b限制a和b,这样,应该有一个存在instance Show a和instance Num b对类型a和b这样foo的在这些类型的定义.