Bas*_*ato 8 haskell language-design
为什么Haskell使用" - >"似乎只能使用"="?
例如,这有什么问题?
take m ys = case (m,ys) of
(0,_) = []
(_,[]) = []
(n,x:xs) = x : take (n-1) xs
Run Code Online (Sandbox Code Playgroud)
要么
(\x = x * x)
Run Code Online (Sandbox Code Playgroud)
pig*_*ker 21
写作会很不幸
(0, _) = []
Run Code Online (Sandbox Code Playgroud)
因为那不是真的.
在罗伯特·雷科德(Robert Recorde)的传统中,我们试图只在我们打算让左手边与右手边相等时才写出方程式.所以我们写
dup x = (x, x)
Run Code Online (Sandbox Code Playgroud)
使dup x等于(x, x),或
dup = \ x -> (x, x)
Run Code Online (Sandbox Code Playgroud)
使dup等于映射x到的功能(x, x),但不是
\ x = (x, x)
Run Code Online (Sandbox Code Playgroud)
因为没有办法让自己x平等(x, x).
当我们允许"堕落"时,我们只会略微偏离传统,例如,
f 0 = 1
f n = 2 * f (n - 1)
Run Code Online (Sandbox Code Playgroud)
但只是在第二行有一个无声的"否则"的意义上.