LISP - Predicados

Predicados são funções que testam seus argumentos para algumas condições específicas e retornam nulo se a condição for falsa ou se algum valor não nulo for verdadeiro.

A tabela a seguir mostra alguns dos predicados mais comumente usados ​​-

Sr. Não. Predicado e descrição
1

atom

Leva um argumento e retorna t se o argumento for um átomo ou nil se o contrário.

2

equal

Leva dois argumentos e retorna t se eles são estruturalmente iguais ou nil de outra forma.

3

eq

Leva dois argumentos e retorna t se eles são os mesmos objetos idênticos, compartilhando o mesmo local de memória ou nil de outra forma.

4

eql

Leva dois argumentos e retorna t se os argumentos são eq, ou se eles são números do mesmo tipo com o mesmo valor, ou se eles são objetos de personagem que representam o mesmo personagem, ou nil de outra forma.

5

evenp

Leva um argumento numérico e retorna t se o argumento for um número par ou nil caso contrário.

6

oddp

Leva um argumento numérico e retorna t se o argumento é um número ímpar ou nil caso contrário.

7

zerop

Leva um argumento numérico e retorna t se o argumento é zero ou nil caso contrário.

8

null

Leva um argumento e retorna t se o argumento for avaliado como nulo, caso contrário, ele retorna nil.

9

listp

Leva um argumento e retorna t se o argumento for avaliado como uma lista, caso contrário ele retorna nil.

10

greaterp

Leva um ou mais argumentos e retorna t se houver um único argumento ou se os argumentos forem sucessivamente maiores da esquerda para a direita, ou nil caso contrário.

11

lessp

Leva um ou mais argumentos e retorna t se houver um único argumento ou se os argumentos forem sucessivamente menores da esquerda para a direita, ou nil caso contrário.

12

numberp

Leva um argumento e retorna t se o argumento é um número ou nil caso contrário.

13

symbolp

Leva um argumento e retorna t se o argumento é um símbolo, caso contrário ele retorna nil.

14

integerp

Leva um argumento e retorna t se o argumento for um inteiro, caso contrário ele retorna nil.

15

rationalp

Leva um argumento e retorna t se o argumento é um número racional, uma proporção ou um número, caso contrário, ele retorna nil.

16

floatp

Leva um argumento e retorna t se o argumento é um número de ponto flutuante, caso contrário ele retorna nil.

17

realp

Leva um argumento e retorna t se o argumento é um número real, caso contrário ele retorna nil.

18

complexp

Leva um argumento e retorna t se o argumento é um número complexo, caso contrário ele retorna nil.

19

characterp

Leva um argumento e retorna t se o argumento for um caractere, caso contrário ele retorna nil.

20

stringp

Leva um argumento e retorna t se o argumento é um objeto string, caso contrário, ele retorna nil.

21

arrayp

Leva um argumento e retorna t se o argumento for um objeto de array, caso contrário ele retorna nil.

22

packagep

Leva um argumento e retorna t se o argumento é um pacote, caso contrário ele retorna nil.

Exemplo 1

Crie um novo arquivo de código-fonte denominado main.lisp e digite o seguinte código nele.

(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 ))

Quando você executa o código, ele retorna o seguinte resultado -

T
NIL
T
NIL
T
NIL
NIL
NIL
T

Exemplo 2

Crie um novo arquivo de código-fonte denominado main.lisp e digite o seguinte código nele.

(defun factorial (num)
   (cond ((zerop num) 1)
      (t ( * num (factorial (- num 1))))
   )
)
(setq n 6)
(format t "~% Factorial ~d is: ~d" n (factorial n))

Quando você executa o código, ele retorna o seguinte resultado -

Factorial 6 is: 720