函数, let & where
函数 (Functions)
定义函数的语法:
函数体是一个表达式, 该表达式的值就是该函数的返回值.
近似的命令式代码如下:
Let
关键字 let
1 用于声明变量:
in_range min max x =
let in_lower_bound = min <= x
in_upper_bound = max >= x
in
in_lower_bound && in_upper_bound
Haskell 对缩进有着严格的限制, 此处 in_lower_bound
与 in_upper_bound
必须有缩进, 且开头垂直对齐.
Where
使用 where
2 关键字可以实现和 let
关键字相似的功能:
in_range min max x = in_lower_bound && in_upper_bound
where
in_lower_bound = min <= x
in_upper_bound = max >= x
但使用守卫表达式时, 在不同分支内需要使用同一个变量时, 只能使用 where
而无法使用 let
.
它们的区别并不仅限于绑定变量语句的位置, 详情请参见 HaskellWiki.
If
关键字 if
3 与命令式编程语言相似, 用于创建分支:
in_range min max x =
if in_lower_bound then in_upper_bound else False
where
in_lower_bound = min <= x
in_upper_bound = max >= x
Infix
中缀运算符关键字 `
4.