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