为什么Haskell使用 - >而不是=?

时间:2014-08-07 13:02:51

标签: haskell language-design

为什么Haskell使用" - >"它似乎只能使用" ="?

例如,这有什么问题?

take m ys               = case (m,ys) of
                            (0,_)       =  []
                            (_,[])      =  []
                            (n,x:xs)    =  x : take (n-1) xs

(\x = x * x)

1 个答案:

答案 0 :(得分:21)

是不幸的
(0, _) = []

因为事实并非如此。

在Robert Recorde的传统中,我们只在我们打算让左手边与右手边相等时才尝试编写方程式。所以我们写了

dup x = (x, x)

使dup x等于(x, x)

dup = \ x -> (x, x)

使dup等于将x映射到(x, x)的功能,但不是

\ x = (x, x)

因为无法使x等于(x, x)

当我们允许“堕落”时,我们只会略微偏离传统,例如,

f 0 = 1
f n = 2 * f (n - 1)

但仅限于第二行有一个无声的“否则”。