Professional Documents
Culture Documents
Limbajul LISP
Limbajul LISP
https://www.tutorialspoint.com/execute_lisp_online.php
În LISP există liste ale căror elemente sunt atomi "generici" - nu au neapărat un anumit tip de
valoare sau variabilă.
Listele care NU dorim să se evalueze (adică nu dorim ca, de exemplu să se facă suma) se
scriu cu ' în față.
Ex:
Lista (ADD 2 3) - are valoarea 5 (ea se evaluează)
Lista '(ADD 2 3) - rămâne (ADD 2 3) adică o listă cu e elemente: ADD, 2, 3
Diferența dintre cele două este că SET evaluează variabila v1, adică NU atribuie variabilei v1
valoarea rezultată din evaluarea lui v2, ci atribuie variabilei ai cărei nume este stocat în v1, cu
excepția cazului în care v1 are apostrof în față.
SETQ în schimb NU evaluează variabila v1.
Deci de fapt:
(SETQ v1 v2) este FIX același lucru cu (SET 'v1 v2)
Exemplu:
(set 'v (+ 2 3)) - atribuie variabilei v rezultatul operației din dreapta, deci t
(princ v) - afișează 5
(set 'v '(+ 2 3)) - atribuie variabilei v lista din dreapta, neevaluată, deci (+ 2 3)
(princ v) - afișează (+ 2 3)
Exemplu:
(set 'v 'cici) - atribuie variabilei v atomul cici
(set v (+ 2 3)) - în momentul în care atribui cu set, pentru că v NU are apostrof în față,
se evaluează acesta, și se obține cici și deci rezultatul NU i se atribuie lui v, ci
variabilei cici
(princ cici) - afișează 5
Exerciții:
(CDR ’((2 (3)) (4 (5 6) 7)))
Evaluate: (CDR ’((2 (3))(4 (5 6) 7))) ((4 (5 6) 7))
Consider the following program fragment: (CAR (CDR (REVERSE (RI VA FL CA TX))))
(SETQ X ’(RI VA FL CA TX)) (CAR (CDR (TX CA FL VA RI)))
(CAR (CDR (REVERSE X))) (CAR (CA FL VA RI))
What is the value of the CAR expression? CA
Given the function definitions for HY and FY as follows: (CAR (HY (CDR (DO RE (MI FA) SO))))
(DEF HY(PARMS) (REVERSE (CDR PARMS))) (CAR (HY (RE (MI FA) SO))) *
(DEF FY(PARMS) (CAR (HY (CDR PARMS)))) (HY (RE (MI FA) SO))= (REVERSE (CDR (RE
What is the value of the following? (MI FA) SO)))= (REVERSE ((MI FA) SO))=
(FY ’(DO RE (MI FA) SO)) (SO (MI FA)) revenim la *
și avem rezultatul
(CAR (SO (MI FA))) = SO
Evaluate the following expression. (EXP (MULT 2 (SUB 5 (DIV (ADD 5 3 4) 2)) 3) 3)
(EXP (MULT 2 (SUB 5 (DIV (ADD 5 3 4) 2)) 3) 3) (EXP (MULT 2 (SUB 5 (DIV 12 2)) 3) 3)
(EXP (MULT 2 (SUB 5 6) 3) 3)
(EXP (MULT 2 -1 3) 3)
(EXP -6 3)
-63 = -36*6 = -216