LISP Beispiele

 

Addition  
Name add.lisp
Programm (defun add (a b)
(+ a b)
)
Laden (load "c:\\Mylatz\\LISP\\add.lisp")
Aufruf (add 3 4)
Antwort 7

 

Fakultät  
Name fak.lisp
Programm (defun fak (x)
(cond ((equal x 0) 1)
(T (* x (fak (- x 1))))
)
)
Aufruf (fak 112)

 

Fakultät mit Do-Schleife
Name fakdo.lisp
Programm (defun fak (x)
(do ((i x (- i 1));
(erg 1 (* erg i)));
((= i 0) erg));
)
)
)
Aufruf (fak 112)

 

Fibonacci mit Do-Schleife
Name fibo.lisp
Programm (defun fibo (x)
(do ((i x (- i 1));
(erg 1 (* erg i)));
((= i 0) erg));
)
)
)
Aufruf (fibo 10)
Antwort 3628800

 

Member  
Name member.lisp
Programm (defun member (x l)
(cond ((null l) nil)
((equal x (car l)) l)
(T (member x (cdr l))))
)
Aufruf (member 3 (list 2 'a 3 5 7))

 

Transformiere (setzt G für gerade Zahlen, U für ungerade)
Name gou2.lisp
Programm (defun GERADEP (x)
(cond ((numberp x)
(cond ((equal (GCD x 2) 2) T)
(T nil)
)
)
(T nil)
)
)

(defun UNGERADEP (x)
(cond ((numberp x)
(cond ((equal (GCD x 2) 1) T)
(T nil)
)
)
(T nil)
)
)

(defun TRANSFORMIERE (l)
(cond ((null l) nil)
((GERADEP (car l)) (cons 'G (TRANSFORMIERE (cdr l))))
((UNGERADEP (car l)) (cons 'U (TRANSFORMIERE (cdr l))))
(T (TRANSFORMIERE (cdr l)))
)
)

Aufruf (TRANSFORMIERE (list 2 'a 3 5 7))

 

 

PROLOG Beispiele

 

Verwandtschaft  
Name verwandt.pl
Programm vater(ludwig,uwe).
mutter(irmgard,uwe).
kind(Y,X):-vater(X,Y).
kind(Y,X):-mutter(X,Y).
fem(irmgard).
mask(ludwig).
mask(uwe).
sohn(X,Y):- kind(X,Y),mask(X).
tochter(X,Y):- kind(X,Y),fem(X).
Aufruf sohn(X Y)
Antwort X=ludwig
Y=uwe

 

Member  
Name member.pl
Programm member(E,[E|_]).
member(E,[_|R]):-member(E,R).
Aufruf member(3 , [ 2, 4 , 5] )
Antwort false
Aufruf member(3 , [ 2, 3 , 5] )
Antwort true
Aufruf member(X , [ 2, 3 , 5] )
Antwort X=2 ;
X=3 ;
X=4 ;
false

 

Reverse  
Name reverse.pl
Programm reverse(L,A):-rev(L,[],A).
rev([],A,A).
rev([H|L],R,A):-rev(L,[H|R],A).
Aufruf reverse( [ 2, 4 , 5] , X)
Antwort X = [5,4,2]