跳到主要内容

函数的基本语法

一等公民

声明和调用语法

前缀函数

add :: Int -> Int -> Int -- 类型声明,最后一个是返回值类型,前面依次是各个参数类型
add x y = x + y -- 绑定声明

中缀函数

  • 优先级:0-9,数字越大优先级越高
  • 结合性:在参数大于等于三个时优先运算的方向
    • infixl:左结合
    • infixr:右结合
    • infix:不结合,参数大于三个时必须使用括号明确运算的顺序
(+++) :: [a] -> [a] -> [a]
xs +++ ys = xs ++ ys ++ ys -- [1, 2, 3] +++ [4, 5] -- 结果是 [1,2,3,4,5,4,5]
infixl 5 +++ -- 指定中缀函数的优先级和结合性

有两个形参的普通函数也可以当做中缀函数使用

add :: Int -> Int -> Int
add x y = x + y
n = 1 `add` 2 -- 结果是 3
infixl 5 `add` -- 同样可以使用infix声明

同样中缀函数也可以当做前缀函数使用
这个用法叫section

n = (+) 1 2 -- 结果是 3