小编Mar*_*len的帖子

在Haskell中对类型类和变量赋值的误解

对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

4
推荐指数
1
解决办法
98
查看次数