LISP - Dự đoán
Dự đoán là các hàm kiểm tra các đối số của chúng đối với một số điều kiện cụ thể và trả về nil nếu điều kiện là sai hoặc một số giá trị không phải là điều kiện đúng.
Bảng sau đây cho thấy một số vị từ được sử dụng phổ biến nhất:
Sr.No. | Vị ngữ & Mô tả |
---|---|
1 | atom Nó nhận một đối số và trả về t nếu đối số là nguyên tử hoặc nil nếu ngược lại. |
2 | equal Nó có hai đối số và trả về t nếu chúng bằng nhau về cấu trúc hoặc nil nếu không thì. |
3 | eq Nó có hai đối số và trả về t nếu chúng là các đối tượng giống hệt nhau, chia sẻ cùng một vị trí bộ nhớ hoặc nil nếu không thì. |
4 | eql Nó có hai đối số và trả về t nếu các đối số là eqhoặc nếu chúng là các số cùng loại với cùng một giá trị hoặc nếu chúng là các đối tượng ký tự đại diện cho cùng một ký tự, hoặc nil nếu không thì. |
5 | evenp Nó nhận một đối số số và trả về t nếu đối số là số chẵn hoặc nil nếu khác. |
6 | oddp Nó nhận một đối số số và trả về t nếu đối số là số lẻ hoặc nil nếu khác. |
7 | zerop Nó nhận một đối số số và trả về t nếu đối số bằng 0 hoặc nil nếu khác. |
số 8 | null Nó nhận một đối số và trả về t nếu đối số đánh giá là nil, nếu không thì nó trả về nil. |
9 | listp Nó nhận một đối số và trả về t nếu đối số đánh giá thành một danh sách nếu không thì nó trả về nil. |
10 | greaterp Nó cần một hoặc nhiều đối số và trả về t nếu có một đối số duy nhất hoặc các đối số lớn hơn liên tiếp từ trái sang phải, hoặc nil nếu khác. |
11 | lessp Nó cần một hoặc nhiều đối số và trả về t nếu có một đối số duy nhất hoặc các đối số nhỏ hơn liên tiếp từ trái sang phải, hoặc nil nếu khác. |
12 | numberp Nó nhận một đối số và trả về t nếu đối số là một số hoặc nil nếu khác. |
13 | symbolp Nó nhận một đối số và trả về t nếu đối số là một ký hiệu, ngược lại nó trả về nil. |
14 | integerp Nó nhận một đối số và trả về t nếu đối số là số nguyên, ngược lại nó trả về nil. |
15 | rationalp Nó nhận một đối số và trả về t nếu đối số là số hữu tỉ, là một tỷ lệ hoặc một số, nếu không thì nó trả về nil. |
16 | floatp Nó nhận một đối số và trả về t nếu đối số là số dấu phẩy động, ngược lại nó trả về nil. |
17 | realp Nó nhận một đối số và trả về t nếu đối số là số thực, ngược lại nó trả về nil. |
18 | complexp Nó nhận một đối số và trả về t nếu đối số là số phức, ngược lại nó trả về nil. |
19 | characterp Nó nhận một đối số và trả về t nếu đối số là một ký tự, ngược lại nó trả về nil. |
20 | stringp Nó nhận một đối số và trả về t nếu đối số là một đối tượng chuỗi ngược lại nó trả về nil. |
21 | arrayp Nó nhận một đối số và trả về t nếu đối số là một đối tượng mảng, ngược lại nó trả về nil. |
22 | packagep Nó nhận một đối số và trả về t nếu đối số là một gói, ngược lại nó trả về nil. |
ví dụ 1
Tạo một tệp mã nguồn mới có tên main.lisp và nhập mã sau vào đó.
(write (atom 'abcd))
(terpri)
(write (equal 'a 'b))
(terpri)
(write (evenp 10))
(terpri)
(write (evenp 7 ))
(terpri)
(write (oddp 7 ))
(terpri)
(write (zerop 0.0000000001))
(terpri)
(write (eq 3 3.0 ))
(terpri)
(write (equal 3 3.0 ))
(terpri)
(write (null nil ))
Khi bạn thực thi mã, nó trả về kết quả sau:
T
NIL
T
NIL
T
NIL
NIL
NIL
T
Ví dụ 2
Tạo một tệp mã nguồn mới có tên main.lisp và nhập mã sau vào đó.
(defun factorial (num)
(cond ((zerop num) 1)
(t ( * num (factorial (- num 1))))
)
)
(setq n 6)
(format t "~% Factorial ~d is: ~d" n (factorial n))
Khi bạn thực thi mã, nó trả về kết quả sau:
Factorial 6 is: 720