-M ột hàm có thể định nghĩa bằng nhiều biểu thức vê phải khác nhau
- Cú pháp tổng qu át:
<pattem> = <expression>, <condition>
- Ví dụ : tính dãy Fibonacci fib 0 = 0
fib 1 = 1
Ví d ụ : tính độ dài chuỗi Length [] = 0 length (a : L) = 1 + (length L) - Ví d ụ : tính tổng của mảng sum [] = 0 sum [a : X] = a + sum X - Ví dụ : tính tích của mảng product [] = 1 product [a : X] = a * product X
8.3. Phương pháp currying (tham đối hoá từng phần - partialparameterization) parameterization)
- Cho hàm n biến : f(xl, x2,..., xn)
- Có thể viết l ạ i :
x l—>(x2-->...(xn—>f(xl..xn))...))
-M ột hàm nhiều hơn 1 tham đối thì có thể tham đối hoá từng phần
triple x = 3 * x h o ặ c triple = multi 3
- Các ngôn ngữ hàm thường không sử dụng định kiểu
- Cho phép định nghĩa các hàm đa kiểu với lời gọi có các tham đối có các kiểu dữ liệu khác nhau
4 Có 3 loại kiểu nguyên thủy đó là: kiểu số; kiểu bool và kiểu kí tự
Kiểu sô :gồm có kiểu sô nguyên và kiểu sô thực.
Kiểu bool: có 2 giá trị là True và False;
Kiểu kí tự: gồm các kí tự trong ASCII.Các kí tự được đặt ưong dấu ngoặc đơn
- V í dụ
pair X y = [x, y]
- Sử dụng
pair 1 2 —> [1, 2]
pair true false —> [true, false]
8.5. Tính hàm theo kiểu khôn ngoan
- Thông thường khi tính giá trị một hàm, các thamđôi được tính giá trị ưước —> tính giá trị của hàm mult (fac 3) (fac 4) —> mul 6 24 --> 144
- Rút gọn biểu thức —> đơn giản hơn : rút gọn theo thứ tự áp dụng mult (fac 3) (fac 4) —> (fac 3) * (fac 4)