<< Chapter < Page | Chapter >> Page > |
Ví du:
>(CONS 3 '(1 2 3))
= (3 1 2 3)
>(CONS 3 nil)
= (3)
>(CONS '(a b) '(1 2 3))
= ((A B) 1 2 3)
Ví du:
>(list 1 2)
= (1 2)
>(list 'a 'b)
= (A B)
>(list 'a 'b (+ 2 3 5))
= (A B 10)
Ví du:
>(atom 'a)
= T
>(numberp 4)
= T
>(symbolp 'a)
= T
>(listp '(1 2))
= T
>(symbolp NIL)
= T
>(listp NIL)
= T
>(null NIL)
= T
>(null ‘(a b))
= NIL
>(null 10)
= NIL
Ví dụ:
>(AND (>3 2) (= 3 2) (+ 3 2))
= NIL
>(AND (>3 2) (- 3 2) (+ 3 2))
= 5
Ví du:
>(OR (= 3 2) (+ 2 1) (list 1 2))
= 3
>(OR (= 2 1) (Cdr ‘(a) ) (listp 3 ))
= NIL
(ÐK2E2)
..................
(ÐKnEn)
[(TEn+1)]
)
Nếu ĐK1 khác NIL thì trả về kết quả là giá trị của E1, ngược lại sẽ xét ĐK2. Nếu ĐK2 khác NIL thì trả về kết quả là giá trị của E2, ngược lại sẽ xét ĐK3...
......
Nếu ĐKn khác NIL thì trả về kết quả là giá trị của En, ngược lại sẽ trả về NIL hoặc trả về kết quả là giá trị của En+1 (trong trường hợp ta sử dụng (T En+1))
Cú pháp định nghĩa hàm là:
(defun<tên hàm><danh sách các tham số hình thức>
<biểu thức>
)
Ví dụ 1: Ðịnh nghĩa hàm lấy bình phương của số a
(defun binh_phuong (a)
(* a a)
)
Sau khi nạp hàm này cho LISP, ta có thể sử dụng như các hàm đã được định nghĩa trước.
>(binh_phuong 5)
= 25
>(binh_phuong (+ 5 2))
= 49
Ví dụ 2: Ðịnh nghĩa hàm DIV chia số a cho số b, lấy phần nguyên.
Trước hết ta có: a DIV b = (a – a MOD b)/b
(defun DIV (a b)
(/ (- a (MOD a b)) b)
)
Một hàm đệ quy là một hàm có lời gọi chính nó trong biểu thức định nghĩa hàm. Mô tả một đệ quy bao gồm:
Notification Switch
Would you like to follow the 'Ngôn ngữ lập trình' conversation and receive update notifications?