Article View: fj.lang.lisp
Article #70Mick-Lisp Tutorial (2nd session)
From: Akio Tokaji
Date: Wed, 17 Apr 1996 00:00
Date: Wed, 17 Apr 1996 00:00
113 lines
5060 bytes
5060 bytes
$B$3$l$+$i!"(BMick-Lisp Tutorial 2nd session $B$r;O$a$^$9!#(B
[Mick-Lisp Tutorial 2nd session (1)]
$B:#2s$O!"(B
(1) $B3F%N!<%I(B(PE)$B$,;}$D%a%b%j!?%-%c%C%7%e$NNL(B
(2) GC $B$NJ}<0(B (Part 1)
$B$K$D$$$F$*OC$7$^$9!#(B
$B!|(BLisp_Object $B%]%$%s%?$NBg$-$5$,(B32bit$B$ND9$5$G$"$k$H2>Dj$7$^$9!#(B
$B$3$N>l9g$O!"7?$rI=$o$9(B type $B%a%s%P$,!"(B8bit $B@j$a$F$$$^$9$N$G!"(B
$B%"%I%l%96u4V(B($B$D$^$j%N!<%I$N:GBg8D?t(B)$B$H$7$F$O!"(B2^24$B8D$K$J$j$^$9!#(B
typedef
union Lisp_Object
{
/* Used for comparing two Lisp_Objects;
also, positive integers can be accessed fast this way. */
int i;
struct
{
char type;
int val: 24;
} s;
struct
{
char type;
unsigned int val: 24;
} u;
}
Lisp_Object;
$B!|4pK\E*$K!"3F(BPE$B$O!"$=$l<+BN$G!"(Bcons $B%;%k$d!"%7%s%\%k!"J8;zNs$rI=$o$9(B
$B!V%*%V%8%'%/%H!W$KJQ2=(B($BJQ?H(B)$B$7$^$9!#(B
$BNc$($P!"(Bcons/symbol/string $B$O!"0J2<$N$h$&$JDj5A$K$9$k$3$H$,$G$-$^$9!#(B
struct Lisp_Cons
{
Lisp_Object car, cdr;
};
struct Lisp_Symbol
{
Lisp_Object Lisp_String *name; /* -> Lisp_String */
Lisp_Object value;
Lisp_Object function;
Lisp_Object plist;
Lisp_Object next; /* -> next Lisp_Symbol in this obarray */
};
struct Lisp_String
{
long size;
unsigned char data[1];
};
$B!|$3$N>l9g!"3F%*%V%8%'%/%H$N%5%$%:$O(B($B<+J,<+?H$N7?$r<1JL$9$k>pJs$r=|$/$H(B)$B!'(B
Lisp_Cons $B"*(B 8byte
Lisp_Symbol $B"*(B 24byte
Lisp_String $B"*(B 5byte$B!A(B
$B$H$J$j$^$9!#(B
$B!|$?$@$7!"<+J,<+?H$,2?$G$"$k$+(B(cons, symbol or string) $B$r<1JL$9$k$?$a$N!"(B
tag $B$NNN0h(B(1byte$BDxEY(B)$B$,MW$j$^$9$N$G!">e$N%5%$%:$K$=$l$rB-$9$3$H$K$J$j(B
$B$^$9$,!#(B
$B!|;d$,!"D6:YN3EY$N!V(BLisp$B%^%7%s!W$G!":NMQ$9$k$HNI$$$H;W$&(B GC $B$NJ}<0$O!"(B
$B4pK\E*$K$O!"(BReference Counter $BJ}<0$G$9$,!"0J2<$N$h$&$JA0Ds$KN)$A!"(B
$B!V40A45U%]%$%s%?!WJ}<0$rA*Br$9$k$3$H$K$7$^$9!'(B
- $BB?$/$N>l9g!"0l$D$N%*%V%8%'%/%H$O!"B>$N0l8D$^$?$O?t8D$N%*%V%8%'%/%H(B
($B$N%]%$%s%?(B)$B$+$i;X$5$l$F$$$k(B($B2?==!"2?I4$+$i;X$5$l$k$3$H$O>/$J$$(B)$B!#(B
- $BF0E*$K(B node $B$NG[CV$rJQ$($?$$>l9g$K!"<+J,<+?H$r;X$7$F$$$k%*%V%8%'%/(B
$B%H$N0lMw$,J,$C$F$$$k>l9g$K$O!"$=$l$i$N%*%V%8%'%/%H(B($B$@$1(B)$B$K!"<+J,$N(B
$B0\F0@h$rCN$i$;$l$PNI$$!#(B
$B"($b$A$m$s!"1~MQJ,Ln$d%W%m%0%i%`$N:n$j$K0MB8$7$^$9$,!#(B
$B!|!V40A45U%]%$%s%?J}<0!W$H$$$&$N$O!"(BReference Counter $B$N$h$&$K?tCM$H$7(B
$B$F%j%s%/>pJs$r4IM}$9$k$N$G$O$J$/!"<+J,<+?H$r;X$7$F$$$k%*%V%8%'%/%H(B($B$N(B
$B%"%I%l%9(B)$B$N0lMw$rA4$F4IM}$9$k$3$H$K$h$j!"!V$R$^!W$J;~$K!"<+J,>!<j$K(B
$B0\F0$9$k$3$H$,$G$-$^$9!#(B
$B!|3F%N!<%I$O<+J,$r;X$9!"%*%V%8%'%/%H(B($B$X$N5U%]%$%s%?(B)$B$N?t$,(B 0 $B$K$J$C$?;~(B
$B$K$O!"<+$i!"(BFree Cell List $B$rC)$C$F!"$=$N:G8eHx(B($B$N(B cdr)$B$K!"<+J,<+?H$r(B
$B7R$$$G!"5Y;_>uBV$KF~$j!"B>$N%"%/%F%#%V$J(B node $B$+$i!"MxMQ$5$l$k$N$rBT$A(B
$B$^$9!#$^$?!"5U%]%$%s%?$N?t$,(B 0 $B$G$J$/!"$+$D!"=hM}$,9T$J$o$l$F$$$J$$(B($B<+(B
$BJ,$,9T$&$Y$-=hM}$,$J$$(B)$B>l9g$K$O!"<+J,<+?H$r%3%T!<$7$F!"%R!<%WNN0h$NH?(B
$BBPB&$K0\F0$7$^$9!#$?$@$7!"=d2s9=B$$,%3%T!<$5$l$J$$$h$&$K$9$k$?$a$K!"(B
$B%H%C%W%l%Y%k$N(B Obarray $B$+$i=gHV$K!"!V;R6!!W$KBP$7$F!"!V0\F0;XNa!W$r=P(B
$B$7$^$9!#?F$+$i0\F0;XNa(B($B8"Mx(B)$B$r<u$1<h$C$?!"(Bnode $B$@$1$,!"2K$r8+$D$1$F<+(B
$BJ,<+?H$r%3%T!<$7$^$9(B(Mark & Copy $B$H$G$b8F$V$Y$-$+(B)$B!#(B
$B!|H?BPB&$K0\F0$7$?!V?F!W$O!"0\F0;XNa$r=P$7$??t(B($B$D$^$j;R6!$N?t(B)$B$@$1!V;DN1(B
$B%+%&%s%?!W(B($B%0%m!<%P%k$JJQ?tCM(B)$B$rA}$d$7$F$*$-!";R6!$,0\F0$7$F$-$?$i!"$3(B
$B$l$r8:$i$7$^$9!#0\F0$7$F$-$?;R6!$?$A$b!"<+J,$K;R6!(B($BB9(B)$B$,$$$k>l9g$K$O!"(B
$B!V;DN1%+%&%s%?!W$rA}$d$7$F!"<+J,$N;R6!$,0\F0$7$F$/$k$N$rBT$A$^$9!#(B
$B!|!V;DN1%+%&%s%?!W$,(B 0 $B$K$J$C$?$i!"H?BPB&$N%R!<%WNN0h(B($B<B:]$K$O!"(Bnode $B$N(B
$B=89g(B)$B$r0l5$$K;&$7$^$9(B($BDd;_$5$;$F!"(BFree Cell $B$KLa$9(B)$B!#(B
--
/**********************************************************************
* Akio TOKAJI (tokaji@db.nm.fujitsu.co.jp) / Fujitsu Limited
*
* "Imagination is more important than knowledge"
* (fortune cookie's message)
**********************************************************************/
Technical Details
Message-ID:
<TOKAJI.96Apr17204042@zaurus.db.nm.fujitsu.co.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<TOKAJI.96Apr9161956@zaurus.db.nm.fujitsu.co.jp>Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 1421c0,5a0d03444325aa7a X-Google-Attributes: gid1421c0,public X-Google-Thread: 102daf,202b295771f68e1d X-Google-Attributes: gid102daf,public From: tokaji@db.nm.fujitsu.co.jp (Akio Tokaji) Subject: Mick-Lisp Tutorial (2nd session) Date: 1996/04/17 Message-ID: <TOKAJI.96Apr17204042@zaurus.db.nm.fujitsu.co.jp> X-Deja-AN: 148155061 distribution: fj references: <TOKAJI.96Apr9161956@zaurus.db.nm.fujitsu.co.jp> organization: Fujitsu Ltd., Shin-yokohama, Kanagawa, Japan newsgroups: fj.lang.lisp,fj.comp.parallel