******************************************************
* StoK: Scheme $B%5%V%;%C%H$+$i(B KL1 $B$X$N%H%i%s%9%l!<%?(B *
*   $BEl5~Bg3XBg3X1!M}3X7O8&5f2J>pJs2J3X@l96(B           *
*     $BBg;37C90(B(oyama@is.s.u-tokyo.ac.jp)             *
******************************************************

$B!z2r@b=q(B

a. $B%W%m%0%i%`L>(B: StoK

b. $B=hM}$N35MW(B: Scheme $B%5%V%;%C%H$+$i(B KL1 $B$X$N%H%i%s%9%l!<%?$G$9!#(B

b.1 $B<B9T4D6-(B

$BE83+$5$l$?%U%!%$%k$NCf$K(B Makefile $B$,F~$C$F$$$k$N$G!"(B
% make
$B$G%3%s%Q%$%k$7$F$/$@$5$$!#(Bmake $B$,@.8y$9$k$H!"$=$N%G%#%l%/%H%j$K(B s2k $B$H(B
$B$$$&%W%m%0%i%`$,=PMh$k$O$:$G$9!#(B

$B%3%s%Q%$%k!"<B9T!"$H$b$K!"(BKL1 $B=hM}7O0J30$K$OFC$KI,MW$J%=%U%H%&%'%"$O$"(B
$B$j$^$;$s$,!"$$$/$D$+$N%f!<%F%#%j%F%#$O(BC$B%7%'%k$NB8:_$r2>Dj$7$F$$$^$9!#(B

$BF0:n$r3NG'$7$?4D6-$O(B

Sun Enterprise 2000 + SunOS 5.5.1 (Solaris) + KLIC 2.002

$B$G$9!#(B

b.2 $B%W%m%0%i%`$N5!G=(B, $B@)8B(B, $B%P%0Ey(B

Scheme $B%5%V%;%C%H%W%m%0%i%`$r(B KL1 $B%W%m%0%i%`$KJQ49$7$^$9!#(BKL1 $B%3%s%Q%$(B
$B%i$H6(NO$9$k$3$H$K$h$C$F!"(BScheme $B%W%m%0%i%`$r%3%s%Q%$%k$9$k$3$H$,$G$-(B
$B$^$9!#J,3d%3%s%Q%$%k$b%5%]!<%H$7$F$$$^$9!#(B

$B$3$N=hM}7O$O(B R4RS [1] $B$K$h$k(B Scheme $B$N;EMM$r$9$Y$F$OK~$?$7$F$$$^$;$s!#(B
$B;EMM$N0c$$$K$D$$$F$N>\:Y$OJL%I%-%e%a%s%H$r$4Mw$/$@$5$$!#$3$3$G$OMWE@$r(B
$B4JC1$K$^$H$a$^$9!#(BR4RS $B$,%5%]!<%H$rMW5a$7$F$$$F!"(BStoK $B=hM}7O$,%5%]!<%H(B
$B$7$F$$$J$$5!G=$O<!$N$b$N$G$9!#(B

    call/cc$B!"(Bdelay/force$B!"Bg0hJQ?t!"%G!<%?9=B$$X$NGK2uE*A`:n!"(B
    $B%Y%/%?!"IbF0>.?t!"%]!<%H$KI{:nMQ$r5Z$\$9F~=PNO(B

$B$J$*!"Bg0hJQ?t$NBe$o$j$H$7$F!"%U%!%$%k$r;HMQ$7$?5<;wE*$JBg0hJQ?t$r%5%]!<(B
$B%H$7$F$$$^$9!#(B

$B$b$H$b$H$O%3%s%Q%$%i$O(B Scheme $B$G=q$+$l$^$7$?!#$^$:;THN$N(B Scheme $B%3%s%Q(B
$B%$%i$K$h$C$F(B KL1 $B$K$h$k(B StoK $B=hM}7O$r@8@.$7!"$5$i$K!"$=$N@8@.$5$l$?=h(B
$BM}7O$K$h$C$F<+J,<+?H$r%3%s%Q%$%k$9$k$3$H$K$h$j!"F1:-$7$?(B KL1 $B$G=q$+$l(B
$B$?(B StoK $B=hM}7O$r:n@.$7$^$7$?!#(B

$BF0:n%A%'%C%/$O$^$@$"$^$j?<$/9T$C$F$$$J$$$?$a!"%P%0$,@x$s$G$$$k2DG=@-$O(B
$BBg$$$K$"$j$^$9$,!">/$J$/$H$b%3%s%Q%$%i<+?H$O%3%s%Q%$%k$G$-$F$$$k$N$G!"(B
$B$h$[$IJQ$C$?(B Scheme $B%W%m%0%i%`$r=q$+$J$1$l$P$&$^$/$$$/$O$:$G$9!#=hM}7O(B
$B<+?H$N5-=R$r4JC1$K$9$k$?$a$K!"J8K!%(%i!<$r$O$8$/G=NO$O$d$dDc$/$J$C$F$$(B
$B$^$9$,!"@5$7$$%W%m%0%i%`$r%3%s%Q%$%k$9$kG=NO$O9b$$$H;W$$$^$9!#(B

b.3 $BA`:nK!(B

s2k $B$N8e$K0z?t$H$7$F(B Scheme $B%W%m%0%i%`$r3JG<$7$?%U%!%$%kL>$rJ#?tJB$Y$^(B
$B$9!#Nc$($P!"(B

% s2k foo.sc bar.sc baz.sc

$B$N$h$&$K$7$^$9!#(B

Scheme $B%W%m%0%i%`%U%!%$%kL>$N3HD%;R$O(B .sc $B$G$b(B .scm $B$G$b2?$G$b$+$^$$$^(B
$B$;$s$,!"ET9g>e3HD%;R$J$7$N%U%!%$%k$OHr$1$F$/$@$5$$!#%3%s%Q%$%k$,@.8y$9(B
$B$k$H!">e$NNc$G$O!"%+%l%s%H%G%#%l%/%H%j$K(B foo.kl1$B!"(Bbar.kl1$B!"(Bbaz.kl1 $B$H(B
$B$$$&%U%!%$%k$,$G$-$^$9!#$=$NB>$K!"@8@.$5$l$?(B KL1 $B%W%m%0%i%`%U%!%$%k$N(B
$BL>A0$rNs5s$7$?%U%!%$%k$,(B _kl1_sources_ $B$H$$$&L>A0$G$G$-$^$9!#E:IU$7$?(B 
k2b $B$H$$$&%f!<%F%#%j%F%#$r<B9T$9$l$P!">!<j$K(B _kl1_sources_ $B$K$"$k%U%!(B
$B%$%k72$H%i%$%V%i%j$r%3%s%Q%$%k$7!"<B9T%U%!%$%k(B a.out $B$r:n$C$F$/$l$^$9!#(B
$BCm0U$H$7$F!"E:IU$7$?%U%!%$%k$N$&$A!"(Br4rs.kl1$B!"(Bnewtty.kl1$B!"(Bs2klib.kl1$B!"(B
kl1main.kl1 $B$N3F%U%!%$%k$O!"%3%s%Q%$%k!"%j%s%/$5$l$k(B Scheme $B%W%m%0%i%`(B
$B$b6&DL$K;HMQ$7$^$9$N$G!"%+%l%s%H%G%#%l%/%H%j$KCV$$$F$*$$$F$/$@$5$$!#(B

$B$9$Y$F$N(B Scheme $B%=!<%9%W%m%0%i%`%U%!%$%k$K$OI,$::G=i$K%b%8%e!<%k@k8@$,(B
$B=q$+$l$F$$$kI,MW$,$"$j$^$9!#%U%!%$%k$NF,$K(B

(module foo)

$B$J$I$H=q$$$F$/$@$5$$!#(Bfoo $B$,$=$N%U%!%$%k$N%b%8%e!<%kL>$H$7$FG'<1$5$l$^(B
$B$9!#(B

$B%3%s%Q%$%k$5$l$?(B Scheme $B%W%m%0%i%`$N<B9T$O(B scheme-main $B%b%8%e!<%k$N(B
scheme-main $B4X?t$+$i3+;O$7$^$9!#(Bscheme-main $B4X?t$O2<$N$h$&$KFs$D$N0z?t(B
$B$r$H$j$^$9!#(B

(define (scheme-main argc argv)
  (if (not (= argc 1))
      (error 'scheme-main "Usage: a.out num" argv)
      (let ((n (string->integer (list-ref argv 0))))
	(fib n))))

argc $B$K$O%3%^%s%I%i%$%s0z?t$N8D?t!"(Barv $B$K$O%3%^%s%I%i%$%s0z?t$,%j%9%H(B
$B$N7A$G3JG<$5$l$^$9!#:G=*E*$J(B scheme-main $B$NI>2ACM$OC<Kv$KI=<($5$l$^$9!#(B

s2k $B$K$h$C$F(B Scheme $B$r(B KL1 $B$KJQ49$9$k$@$1$N>l9g$K$O(B scheme-main $B%b%8%e!<(B
$B%k$*$h$S(B scheme-main $B4X?t$O!"I,$:$7$b%=!<%9%U%!%$%k72$K4^$^$l$F$$$kI,(B
$BMW$O$"$j$^$;$s!#$7$+$7!"$=$N>l9g!"(BKL1 $B%3%s%Q%$%i$,$=$l$i$N%W%m%0%i%`$r(B
$B%3%s%Q%$%k8e%j%s%/$9$k$H$-$K%(%i!<$K$J$j$^$9!#(B

scheme-main $B%b%8%e!<%k$@$1$OFCJL$K!";HMQ$9$kB>%b%8%e!<%k$N@k8@$r=q$/I,(B
$BMW$,$"$j$^$9!#%U%)!<%^%C%H$O<!$N$h$&$K$J$C$F$$$^$9!#(B

(module foo)
(module-import bar)
(module-import baz)
(module-import-end)

$B$3$N@k8@$O!":G=*E*$K%3%s%Q%$%k!"%j%s%/$5$l$F@8@.$5$l$k%W%m%0%i%`$,!"(B
bar $B$*$h$S(B baz $B$NCf$K$"$k4X?t$r8F$S=P$92DG=@-$,$"$k$3$H$r0UL#$7$F$$$^(B
$B$9!#<B9T$N2aDx$G8F$S=P$5$l$k$+$I$&$+$,LdBj$G$"$C$F!"(Bscheme-main $B$NCf$G(B
$BD>@\E*$KJ8LLE*$K8F$P$l$F$$$k$+$I$&$+$O4X78$"$j$^$;$s!#$b$7$3$l$i$N@k8@(B
$B$,$J$$$K$b$+$+$o$i$:(B bar $B$d(B baz $B$NCf$GDj5A$5$l$F$$$k4X?t$r8F$S=P$=$&$H(B
$B$7$?>l9g!"%3%s%Q%$%k$ODL$j$^$9$,!"%i%s%?%$%`%(%i!<$K$J$j$^$9!#$A$J$_$K(B
scheme-main $B0J30$N%b%8%e!<%k$K$O(B module-import $B$N@k8@$r=q$$$F$O$$$1$^(B
$B$;$s!#(B

$BJ,3d%3%s%Q%$%k$O2DG=$G$9!#J#?t$N(B Scheme $B%U%!%$%k$r0lEY$K(B s2k $B$KEO$9I,(B
$BMW$O$"$j$^$;$s!#$7$+$7$=$N>l9g$K$O!"(B_kl1_sources_ $B%U%!%$%k$K=q$+$l$k(B
KL1 $B%W%m%0%i%`%U%!%$%kL>$O:G8e$KEO$7$?0z?t$K$h$C$F@8@.$5$l$?$b$N$K$J$j(B
$B$^$9!#(B

$BE:IU$7$?(B Scheme $B%W%m%0%i%`%U%!%$%k$NCf$G!"3HD%;R$,(B .sc $B$G=*$o$k$b$N$O(B
StoK $BMQ$N%H%$%5%s%W%k%W%m%0%i%`!"3HD%;R$,(B .scm $B$G=*$o$k$b$N$O!"(BStoK $B%3(B
$B%s%Q%$%i<+?H$G$9!#(B


c. $B=hM}$KMW$9$k;~4V(B:

$B$$$/$D$+$N%H%$%W%m%0%i%`$*$h$S(B Scheme $B$G=q$+$l$?(B StoK $B=hM}7O$=$N$b$N$r(B
$B%F%9%H%W%m%0%i%`$H$7$FE:IU$7$^$7$?!#(B

$B%U%#%\%J%C%A?tNs$r5a$a$k%W%m%0%i%`(B fib.sc$B!"AG?t@8@.%W%m%0%i%`(B prime.sc$B!"(B
$B%/%$%C%/%=!<%H%W%m%0%i%`(B qsort.sc $B$N%3%s%Q%$%k$O!">e5-$N%^%7%s4D6->e$G(B
$B$O(B Scheme$B$+$i(B KL1 $B$,Ls(B10$BIC$G!"(BKL1 $B$+$i%P%$%J%j$,Ls(B3$BJ,$+$+$j$^$7$?!#(B
StoK $B<+?H$N%3%s%Q%$%k$K$O(B Scheme $B$+$i(B KL1 $B$,Ls(B20$BJ,!"(BKL1 $B$+$i%P%$%J%j$,(B
$BLs(B5$BJ,$+$+$j$^$7$?!#%P%$%J%j@8@.$N%3%s%Q%$%k;~4V$K$O!"%i%$%V%i%j$r%3%s(B
$B%Q%$%k$9$k;~4V$b4^$^$l$F$$$^$9!#(B


$B!|:n<T$N%3%a%s%H(B

Scheme $B$G(B Scheme $B$+$i(B KL1 $B$X$N%H%i%s%9%l!<%?$r=q$-!"$=$N%H%i%s%9%l!<%?(B
$B<+?H$r!"%H%i%s%9%l!<%?$G(B KL1 $B$KJQ49$7$F!"$=$N7k2L$r%3%s%F%9%H$KDs=P$9(B
$B$kJ}?K$G$$$3$&$H7h$a$?$N$O==7n=i$a$G$7$?!#!V(BKL1 $B$G(B Scheme $B$r$I$l$/$i$$(B
$BI=8=$G$-$k$+!W!V(BKL1 $B$r%P%C%/%(%s%I$K;HMQ$9$k$H8@8l=hM}7O$N<BAu$O$I$l$/(B
$B$i$$4JC1$+!W$H$$$&E@$K6=L#$r;}$A$J$,$i<BAu$rB3$1$^$7$?!#(B

$B<BAu;X?K$H$7$F$O!"@-G=$O$[$\EY30;k$7!"3Z$K!"B.$/!"$o$+$j$d$9$/<BAu$9$k(B
$B$3$H$r?4$,$1$^$7$?!#B>$N(B primitive $B$NAH$_9g$o$;$G<BAu$G$-$k(B primitive 
$B$O=i$a$+$i%5%]!<%H$r$9$k$D$b$j$,$"$j$^$;$s$G$7$?!#(B

$B:n@.A0$O!":n@.4|4V$O0l=54V$+D9$/$F==F|$H$$$&8+DL$7$G$7$?$,!"%/%m!<%8%c(B
$B$N<B8=!"5<;wE*$JBg0hJQ?t$N<B8=!"%9%H%j!<%`$r;HMQ$9$kJB9TO@M}7?8@8l$N(B
I/O $B$H%]!<%H$rGK2uE*$K99?7$9$k(B Scheme $B$N(B I/O $B$H$N:90[$N2r>C$J$I$K<j$3(B
$B$:$j!"7k6IFs=54V$H>/$7$+$+$j$^$7$?!#(B

StoK $B$,9T$J$C$F$$$k(B Scheme $B$+$i(B KL1 $B$X$NJQ49$,!V@5$7$$!W$3$H$N>ZL@$O$7(B
$B$F$$$^$;$s!#$=$b$=$b(B KL1 $B$N7A<0E*$J%;%^%s%F%#%/%9$,M?$($i$l$F$$$k$+$I(B
$B$&$+$h$/$o$+$j$^$;$s$G$7$?!#(B


$B!|;29MJ88%(B

[1] William Clinger and Jonathan Rees (Editors)
  Revised^4 Report on the Algorithmic Language Scheme,
  2 November 1991.

