background image

JAKICH OBLICZEē DOKONUJA PONIĩSZE FUNKCJE LISPU? 
 
1.  DEFINE (( (COUNT (LAMBDA (E)

 

(COND ((NULL E) 0) ((ATOM E) 1)

 

(T (PLUS (COUNT (CAR E)) (COUNT (CDR E))))))) )) 
 

gdzie: PLUS (n,m)=n+m

 

 

 

2. 

DEFINE (( (AMONG (LAMBDA (A L) (COND ((NULL L) NIL)

 

((EQ A (CAR L)) T)

 

(T (AMONG A (CDR L) ))))))) 

 

3.  DEFINE (( (INSIDE (LAMBDA (A E) (COND ((ATOM E) (EQ A E))

 

((INSIDE A (CAR E)) T)

 

(T (INSIDE A (CDR E)))))) )) 

 

4. 

DEFINE (( (COPYN (LAMBDA (X N) (COND ((ZEROP N) NIL)

 

(T (CONS X (COPYN X (SUB1 
N) )))))) )) 

gdzie argument N jest liczba naturalną. 
gdzie; ZEROP (n) = T jeĞli n=0; NIL w przeciwnym przypadku 
       SUB1(n) =n-1 

 

DEFINE (( (LENGTHS (LAMBDA (L) (COND ((NULL L) 0)

 

(T (ADD1 (LENGTHS (CDR L))))))) )) 
 

gdzie; ADD1(n) = n+1 

 

6. 

DEFINE (( (UNIONS (LAMBDA (X Y) (COND ((NULL X) Y)

 

((MEMBER (CAR X) Y) (UNIONS (CDR 
X) Y))

 

(T (CONS (CAR X) (UNIONS (CDR X) Y)))))) ))

 

DEFINE (( (INTERSECT (LAMBDA (X Y) (COND ((NULL X) NIL)

 

((MEMBER (CAR X) Y) (CONS (CAR X)(INTERSECT (CDR X) Y)))  
                            (T (INTERSECT (CDR X) Y))))) ))

 

 

funkcja zwraca dlugosc listy E

funkcja sprawdza, czy A nalezy do L

funkcja sprawdza, czy A nalezy do L

funkcja tworzy liste  
poprzez zwielokrotnienie X N razy  
np: COPYN(A 3)=(A A A)

funkcja zwraca dlugosc listy L

funkcja laczy dwie listy bez powtorzen

funkcja zwraca liste wspolnych 
elementów list X i Y

background image

!"#$%&'()*+,#'('-.',/0$!$,#'('12

!")3"'4)*'-.+,56-%78)-'9-+

#:;:<=>,?

-=>@A,B/<2C,<DE<,FG;H=>,BI<J@KL,M=@HFNOM=@HFNPL,#(+5.-.68,56-%78+,!"#$,!)4)7$,56-%78.,
Q'#)*$7R

#:;:<=>,D

-=>@A,B/<2C,<SO<,#(+5.-.68,56-%78+,!"#$,!)4)7$,56-%78.,Q'#)*$7R

#:;:<=>,S
(:<:,K>TU,V>JIVTWP<:,;>X<=@K:,BI<J@K=,7)0),/YZW2,/2

7)0)/[ZW2CW
7)0)/YE?ZW2C\677/\677/7)0)/YZ,\677/W222

#<:K;],7)0),/?ZS2^,7)0),/DZD2^,7)0),/SZ__2

#:;:<=>,_

#<:K;],P:VUN`a,7)0),/,/',Q,72,/7,Q,'22C,b
3;H=>c

/(+5.-+,7)0)/,9'4Q(',/\+0?,\+0D2
/7)-(
//-699,\+0?2,\+0D2
//4+4Q+",/7'",\+0?2,\+0D2
/7)0),/7(",\+0?2,\+0D2,2
/0,/7)-\,/7'",\+0?2
/7)0),/7(",\+0?2,\+0D2,22,2,2
NV:H

/(+5.-+,4+4Q+",/9'4Q(',/',9'02
/7)-(
//-699,9'02,-.92
//+d,',/7'",9'022,02
/0,/4+4Q+",',/7(",9'0222,2,2

f(n)=n^3-n : diff(exp(n,3),n) = a to mozna zapisac = diff(prod(n,prod(n,n)),n)

f(n)=n2+n = 3n : prod(3,n) = mozna zapisac tez = sum(sum(n,n),n) 
f(n)=n^2+n : sum(exp(n,2),n) = mozna zapisac tez = sum(prod(n,n),n)

coto(1,3)=succ(succ(coto(0,4)))=succ(5)=6 
 
coto(2,2)=succ(succ(coto(1,3)))= 
=succ(succ(succ(succ(coto(0,succ(succ(2)))))))=8 
      8      7      6       5      4         4      3 
 
funkcja coto(x,y) przeprowadza dzialanie:  
2*x+y+x = 3x+y 
 
coto(3,44)=53

Tu mam najmniejsza pewnosc, 
ale moim zdaniem to tak: 
coto((A B C)(C B A))=(C B A)  
bo: 
coto((ABC)(CBA)) 
    member(A CBA) 
        T -> member(A BA) 
                T -> member(A A) 
                        eq(A A) -> T 
 
coto((BC)(CBA)) 
    member(B CBA) 
        T -> member(B BA) 
                eq(B B) -> T 
 
coto((C) (CBA)) 
    member(C CBA) 
        eq(C C) -> T 
 
coto(()(CBA)) 
    null() -> (CBA) 
 

sorki za takie 
rozpisanie, ale 
nie bardzo wiem 
jak to inaczej 
zrobi

ć

 :) 

 
ogólnie chodzi o 
to jakie warunki i 
kroki 
wykonywane sa 
w kolejnosci

background image

#:;:<=>,e

#<:K;],P:VUN`@=,BI<J@K=

/7'",f//',Q2,7,(22,C

/7(",f//',Q2,7,(2,C

CAR((A B) C D) = (A B)

CDR((A B) C D) = (C D)