祭 㭪i  ii

  ਬi⨢ 㭪iﬨ  i㢠 㭪i, 祭i
㢠祬. 㭪i  ஬ 㬥i i  󤨭 
祭. 祭 㭪i  ii  㯭 :

(DEFUN name (arg1 arg2 ...)
task1
task 2
. . . . .  )

 name - i' 㭪i, arg1, arg2, ... - 㬥 (ࠬ). i 㭪i 
i ii . 箢 ᫮ DEFUN   DEfine FUNction. 

$ (DEFUN FIRST (lst)		$ (FIRST '(q w e r t y))
  (CAR lst) )			q

$ (DEFUN THIRD (lst)		$ (THIRD '(q w e r t y))
   (CADDR lst) )		e

稬 㭪i NULL, 猪 ஧i ஦i ᯨ᮪.   i⨭, 
  㬥⮬  ஦i ᯨ᮪ i 娡i  i讬 .

$ (DEFUN NULL (obj)	$ (NULL '(q w e r)) 	$ (NULL (CDR '(r)))
   (EQL obj NIL) )	F			T

  ii  㭪i ஧i: EQL, ATOM, NULL. 㭪i, i 
ᮢ  ॢiન  㬮      
祭 - i⨭  娡,  ।⠬.

i 㭪i ᪫  ii .     
⨯i: i  㬮. -瘟    㣫i 㦪 i  
஧鸞  ᯨ᮪ ࠧi, i ॡ i㢠. 

   ⮬   訩   ⮬,  ⠪  
 ⨬. ਪ, (CONS 'NR LST).

 訩  ᯨ᪠, 直     ⮬,  ⠪  
 㬮. ਪ, ((ATOM lst) (CONS expr lst)). 

 㬮 i 訩  ᯨ '離  ।⮬.  
祭 । NIL,  祭   i NIL i i 室 
  㯭 .  ।   NIL, i㢠 
 墮 ᯨ ,  ii  i.  ।
 ,  i  ஦i,  १⮬ i 㭪i 㤥 T.

襬 ।, 直 ஧i ᯨ᪨.  㬥⮬  ᯨ᮪,  
।  i⨭, i - 娡i. 㭪i LISTP  
i㢠 㯭 稭: " obj  ⮬,   NIL, 
i  T". 

$ (DEFUN LISTP (obj)		$ (DEFUN LISTP (obj)
   ((ATOM obj) NIL)		((NULL obj))
   T )				((ATOM obj) NIL)
				T )

 i i ᠭ । LISTP, 直 ஧i ⪮ ஦i 
ᯨ᮪ ( i⨭).    㬮, i 类 ஦i. 
  i㢠 ⠪: ॢi ' obj  ஦i ᯨ᮪,
i  i  ⠪, ।  १ 㭪i i⨭.  ॡ 
: ((NULL obj) T), i쪨    ᠬ,  i ((NULL obj)). ⠭i 
  ।i  ⮬ .  ,     㬮 
   (  i 㬮 㢠 ணࠬ i  
⠭쮣 ),   १ 㭪i  .  㣮 
祭 㭪i LISTP :

$ (LISTP 'tree)	$ (LISTP '())	$ (LISTP '(q w e r t y))
NIL 		T		T

 鮣 ஧i ஡ i 㭪i   i 㬮  
஧ﭥ 㭪i sm  १, i  㤥 㢠   
i 祭:

$ (DEFUN sm (lst)		$ (sm '())		$ (sm '(q w e))
   ((NULL lst) 10 1)		1			12
   (SETQ b 2)
   ((CDR lst) 12)		$ (sm '(i))		$ (sm 'g)
   (SETQ b 3) )			3			3

 稬, i  ⮣  㢠  ।
㯭  ( ⠪ ).  । 㬮  i⨭, 
   i i  १ ⠭쮣 ࠧ 墮.

⮢ 㭪i (LIST x1 ... xn) ⢮   ᯨ᮪, ⠬ 类
 x1, ..., xn.  㬥  i, १⮬ 㤥 NIL.

$ (LIST 'a 'b 'c 'd)	$ (LIST 'a '(b c) 'd)	$ (LIST)
(a b c d)		(a (b c) d)		NIL

襬 㭪i MEMBER, 猪   㬥: nam - ᨬ  lst - ᯨ᮪ 
i 猪  ॢi   ᨬ ᯨ. I⨢ i 
i ᨬ  訬 ⮬ ᯨ, i  㣨 ⮬ i ⠪ 
i. ஡  ⠪ ஧'離   ⮬,     । 
 ᯨ.    i   , i   ,  i 
㭪i 㤥 㦥 .  㭪i 㤥  ਡ ⠪  
(訩 ⮢稪):

$ (DEFUN MEMBER (nam lst)		$ (DEFUN MEMBER (nam lst)
  ((EQL nam (FIRST lst)))			((NULL lst) NIL)
  ((EQL nam (SECOND lst)))			((EQL nam (CAR lst)) T)
  ((EQL nam (THIRD lst)))			(MEMBER nam (CDR lst)) )
  ((EQL nam (THIRD (CAR lst))))
  .  .  .  .  .  .  .  .  .  .  .  .  . .  .

i  ii  㤮 㭪i.  㣮 ⮢稪 㤮 㭪i 
MEMBER,  ᭮i 类  ४ᨢ ii, 直   㯭 
䠪:

1.  ᯨ᮪ ஦i (  i),  nam   ᯨ.
2.  nam i i ᯨ,  nam  ᯨ.
3.  nam  i i ᯨ,  nam   ᯨ ⮤i i 
   i쪨 ⮤i  nam  墮 ᯨ.

ﭥ i ४ᨢi 㭪i: REMBER (REMove memBER), 猪   
㬥 - ⮬ obj   ᯨ᮪ lst i 猪   i砭 ⮬ 
obj  ᯨ lst. REMBER-ALL 猪  i ⮬ obj  ᯨ lst.

$ (DEFUN REMBER  (obj lst)		(DEFUN REMBER-ALL (obj lst)
((NULL lst) NIL)			((NULL lst) NIL)
((EQL obj (CAR lst)) (CDR lst))		((EQL obj (CAR lst))
(CONS (CAR lst)				(REMBER-ALL obj (CDR lst))
    (REMBER obj (CDR lst))) )		(CONS (CAR lst)
 					(REMBER-ALL obj (CDR lst))) )

 ஡  㭪i i  ਪ:

$ (REMBER 'a '(q a w e r t a y))	$ (REMBER-ALL 'a '(q a w e r t a y))
(q w e r t a y)				(q w e r t y)

ਬi⨢ 㭪i EQL ⮢  iﭭ ⮬i.   
ॡ i ᯨ᪨. 襬 㭪i EQLIST, 猪 i ᯨ᪨.  
  ᭮i 㯭 䠪i:

1.  訩 ᯨ᮪ ஦i, ,  i 㣨 ᯨ᮪ ஦i,  , i  NIL (   (NULL 㣮 ᯨ)).
2.  㣨 ᯨ᮪ ஦i,  NIL.
3.   讣 ᯨ  i i 㣮 ᯨ,  NIL.
4. ॢi ii 墮i 讣  㣮 ᯨi.

$ (DEFUN EQLIST (lst1 lst2)			$ (DEFUN NOT (obj)
     ((NULL lst1) (NULL lst2))			(EQL obj NIL) )
     ((NULL lst2) NIL)
     ((NOT (EQL (CAR lst1) (CAR lst2))) NIL)
     (EQLIST (CDR lst1) (CDR lst2)) )

㭪i NOT  NIL,  ᯨ᮪  ஦i i  i.

ﭥ  '󤭠 ᯨi.  㭪i APPEND, 㬥⠬ 类 
  ᯨ᪨ lst1  lst2,   㯭 稭:

1.  lst1 ஦i,  lst2.
2. '󤭠  讣 ᯨ i ᯨ᪮, 直 ਬ  १i 
   '󤭠 墮 讣 ᯨ  㣨 ᯨ᪮.

$ (DEFUN APPEND (lst1 lst2)
   ((NULL lst1) lst2)
   (CONS (CAR lst1) (APPEND (CDR lst1) lst2)) )

㭪i  (REVERSE lst1)  ᯨ᮪ lst1.  i ᯨ᮪ ஦i, 
 i १⮬ 㤥 ஦i ᯨ᮪. I i '󤭠 ୥ 
i i ᯨ   訬 ⮬. i쪨  i 㣮 
㬥 㭪i APPEND   ᯨ᮪, i  讣 
 ᯨ ஡ ᯨ᮪, 直 ᪫   쮣.   
 (CONS (CAR lst) NIL).

$ (DEFUN REVERSE (lst)
   ((NULL lst) NIL)
   (APPEND (REVERSE (CDR lst)) (CONS (CAR lst) NIL)) )

襬 㭪i REVERSE  ⠭ 㭪i APPEND.  쮣  
㭪i REVERSE   㬥⠬  ਭ樯i ஡ ⥪. i ᯨ᮪
- ⥪ ᨬi.  i ஦i,  i १稩 ⥪ 㤥 ஦i. 
I  ᨬ  設 ⥪ i    㣨 ⥪. 㣨 
⥪     NIL: (REVER <list> NIL).

$ (DEFUN REVER (lst1 lst2)			$ (REVER '(q w e) NIL)
  ((NULL lst1) lst2)				(e w q)
  (REVER (CDR lst1) (CONS (CAR lst1) lst2)) )



। ⥬ muLisp 

। muLisp  筨 ⠭ ⥬ ᪫  i ⨢  
   , 祭 i  祭 㭪i.  
SAVE i 筥 । muLisp  i SYS - 䠩.  
(SAVE 'C:HOME) i ।  䠩 HOME.SYS   C. i i譮 
    , i - NIL.

। muLisp   ⠦    LOAD: 
(LOAD <file>).  䠩  ,  NIL, i  祭 
 ,  mulisp 稭    ।饬.



஢ 㭪i  muLisp.

 ணࠬ㢠 muLisp  ஢  ணࠬ debug.lsp, 猪 
⠦  । i.  ⮣, 鮡  ஢ 
-类 㭪i i   (TRACE-FUNCTION <func>).  
i 쮣  㭪i function,   ࠭i iࠧ  
 㭪i.  (UNTRACE-FUNCTION <func>) ஭ ஢ 
㭪i <func>.   ii 㭪i <func> i  i 㭪i, i  
祬   ஢, i   ஢. ࠧ 
<func>=<value>  i  ,  㭪i <func>  祭 
<value>.

ਪ, i  (TRACE-FUNCTION APPEND) (APPEND '(q w e) '(r t y u)) 
 ࠭i iࠧ  (ᯮ 訩 ⮢稪, i - 㣨):

APPEND [(q w e) (r t y u)]		APPEND = (r t y u)
APPEND [(w e) (r t y u)] 		APPEND = (e r t y u)
APPEND [(e) (r t y u)]			APPEND = (w e r t y u)
APPEND [NIL (r t y u)]			APPEND = (q w e r t y u)

ﭥ  㭪i REVERSE   ஢ 㭪i APPEND  
ࠧ (REVERSE '(q w)) (ᯮ 訩 ⮢稪, i - 㣨):

REVERSE [(q w)]			REVERSE = (w)
REVERSE [(w)]			APPEND [(w), (q)]
REVERSE [NIL]			APPEND [NIL, (q)]
REVERSE = NIL			APPEND = (q)
APPEND [NIL, (w)]		APPEND = (w q)
APPEND = (w)			REVERSE = (w q)



.

1.  㭪i, 猪 室:
a) i  ⢥⮣ iᯨ ) ⠭i ⮬ ii ᯨ
) 訩  㣮 iᯨ    ) ⠭i ⮬ ᯨ  iᯨ᪠
) 訩 ⮬ ᯨ  iᯨ᪠    )ॢi i   ᯨ

2.  㭪i REVERSE,  ⮢ 㭪i ᥫ  . i: ⠩ 㭪i PUSH  POP.

3.  㭪i, 猪:
)  i ᯨ ஡ 	) 室 i  
) ' i 			) 室 ⨭  



II i 

1.  㭪i:

) (REVERSE_ALL lst),  lst - ᯨ᮪  iᯨ᪠. 㭪i  ୥ 
    i i ᯨ᮪ lst.

$ (reverse_all '(1 2 3 (q w e (r t) y) 7 9))
(9 7 (Y (T R) E W Q) 3 2 1)

) (FIND_NEIGHBOURS lst node),  lst - ᯨ᮪ ॡ  (ॡ   
   ᯨ᪮   ᥫ - i 設), node -  設. 㭪i 
     ᯨ᮪ 設, i  設 node.   
   i⮢.

$ (find_neighbours '((1 2) (3 1) (4 5) (9 1) (2 3) (1 5)) 1)
(2 3 9 5)

) (LINER lst),  lst - ᯨ᮪  iᯨ᪠. iਧ㢠 ᯨ᮪ lst.

$ (liner '(3 (q w e r (t) () y ) 4 (5) o (p () )))
(3 Q W E R T Y 4 5 O P)

) (SYMDIFF lst1 lst2),  lst1  lst2 - .   ᨬ 
   i.

$ (symdiff '(2 3 4 5) '(3 41 1 5))
(2 4 41 1)



iii.

1. a) $ (DEFUN F1 (lst)			) $ (DEFUN F2 (lst)
          (CADDR (CADDDR lst)))  )	        (CAADR lst)  )
) $ (DEFUN FATOM (lst)			) $ (DEFUN LAST (lst)
       ((ATOM (CAR lst) (CAR lst))	       ((CDR lst) (LAST (CDR lst)))
       (FATOM (CAR lst))  )		       (CAR lst)  )
) $ (DEFUN FLAST (lst)			) $ (DEFUN IN (obj lst)
       ((ATOM lst) lst)			       ((NULL lst) NIL)
       ((CDR lst) (FLAST (CDR lst)))	       ((EQL obj (CAR lst)) T)
       (FLAST (CAR lst))  )		       (IN obj (CDR lst))  )

2. $ (DEFUN rev (lst1 lst2)
   ((NULL lst1) lst2)
   (PUSH (POP lst1) lst2)
   (REV lst1 lst2)  )
3. ) $ (DEFUN NO-DOUBLES(lst)
       (NULL lst) NIL)
       (CONS (CAR lst) (NO-DOUBLES (REMBER-ALL (CAR lst) lst)))  )
) $ (DEFUN UNION (lst1 lst2)
       (NO-DOUBLES (APPEND lst1 lst2))  )
) $ (DEFIN MINUS (lst1 lst2)
       ((NULL lst2) lst1)
       (MINUS (REMBER (CAR lst2) lst1) (CDR lst2))  )
) $ (DEFUN INTERSECT (lst1 lst2)
      ((NULL lst1) NIL)
      ((IN (CAR lst1) lst2) (CONS (CAR lst1) (INTERSECT (CDR lst1) lst2)))
      (INTERSECT (CDR lst1) lst2)  )



II i 

) (DEFUN REVERSE_ALL (lst)
    	((NULL lst) NIL)
((ATOM (CAR lst)) (APPEND (REVERSE_ALL (CDR lst)) (CONS (CAR lst))))
(APPEND (REVERSE_ALL (CDR lst)) (CONS (REVERSE_ALL (CAR lst))))  )

) (DEFUN find_neighbours (lst node)
((NULL lst) NIL)
((EQL (CAAR lst) node) (CONS (CADAR lst) (find_neighbours (CDR lst) node)))
((EQL (CADAR lst) node) (CONS (CAAR lst) (find_neighbours (CDR lst) node)))
(find_neighbours (CDR lst) node)  )

) (DEFUN liner (lst)
((NULL lst) NIL)
((LISTP (CAR lst)) (APPEND (liner (CAR lst)) (liner (CDR lst))))
(CONS (CAR lst) (liner (CDR lst)))  )

) (DEFUN symdiff (lst1 lst2)
        (UNION (minus lst1 lst2) (minus lst2 lst1))  )

