为什么Haskell使用" - >"它似乎只能使用" ="?
例如,这有什么问题?
take m ys = case (m,ys) of
(0,_) = []
(_,[]) = []
(n,x:xs) = x : take (n-1) xs
或
(\x = x * x)
答案 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)
但仅限于第二行有一个无声的“否则”。