🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.lisp
Article #70

Mick-Lisp Tutorial (2nd session)

#70
From: Akio Tokaji
Date: Wed, 17 Apr 1996 00:00
113 lines
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-mail
References: <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