对Haskell来说是非常新的知识,它试图了解类型类和变量如何交互。
我要玩的第一件事是:
i :: a; i = 1
Run Code Online (Sandbox Code Playgroud)
我的期望是,由于我输入的字词尽可能通用,因此我应该绝对可以为其分配任何内容。(我知道我可能无法对变量i做任何事情,但这并不重要。)
但是我错了。上面给出了一个错误,并要求它是:
i :: Num a => a; i = 1
Run Code Online (Sandbox Code Playgroud)
经过多玩之后,我想到了以下内容:
g :: Num a => a -> a; g a = a + 1
g 1
(returned 2)
gg :: Num a => a; gg = g 1
gg
(returned 2)
Run Code Online (Sandbox Code Playgroud)
好的...到目前为止很好。让我们尝试一个小数参数。
g :: Num a => a -> a; g a = a + 1
g 1.3
(returned 2.3)
gg :: Num a => a; gg = g 1.3 …Run Code Online (Sandbox Code Playgroud) haskell types variable-assignment typeclass parametric-polymorphism