From: Tanaka Akira Date: 2002-06-07T15:27:46+09:00 Subject: [ruby-dev:17353] Re: blocks and local variables In article <200206070615.g576F9f29792@sharui.nakada.kanuma.tochigi.jp>, nobu.nakada@nifty.ne.jp writes: > $B%V%m%C%/$,$J$/$F$b$H$$$&$N$OF10U$7$^$9$,!"0l$D$N%9%3!<%W$G2?EY(B > $B$bF1$8L>A0$,:FDj5A$5$l$F$+$D$=$l$,JL8D$KM-8z$H$$$&$N$O!"$$$/$i(B > $B$J$s$G$b$d$d$3$72a$.$d$7$^$;$s$+!#(B $B4X?t7?8@8l$G$O$4$/IaDL$NOC$G!"JL$K$d$d$3$72a$.$k$H$O;W$$$^$;$s$,!#(B Scheme $B$G(B (let ((x 1)) (let ((plus1 (lambda (a) (+ a x)))) (let ((x 2)) (let ((plus2 (lambda (a) (+ a x)))) (let ((x 3)) (let ((plus3 (lambda (a) (+ a x)))) ...)))))) $B$"$k$$$O(B (let* ((x 1) (plus1 (lambda (a) (+ a x))) (x 2) (plus2 (lambda (a) (+ a x))) (x 3) (plus3 (lambda (a) (+ a x)))) ...) $B$"$k$$$O(B Ocaml $B$G(B let x = 1 in let plus1 = fun a -> a + x in let x = 2 in let plus2 = fun a -> a + x in let x = 3 in let plus3 = fun a -> a + x in ... $B$H$+!#$^$!!"<+L@$@$H$^$G$O$$$$$^$;$s$1$I!#(B $BC$l$N(B := $B$d(B let $B$,%9%3!<%W$r:n$k$N$G0l$D$N%9%3!<%W(B $B$G$O$J$$$o$1$G$9!#(B $B$?$@!"(BRuby $B$@$H(B if $B$d(B while $BFb$G$NJQ?tDj5A$,2<$KH4$1$k$N$G$=$N$"$?$j$O(B $BLdBj$G$9$M!#(B x := 1 lambda { if ... x := 2 else x = 3 end x = 4 } -- [$BEDCf(B $BE/(B][$B$?$J$+(B $B$"$-$i(B][Tanaka Akira] $B!V$U$($m(B! $B$o$+$a$A$c$s:n@o$G$9$(C"=$B!W(B(Little Worker, $B7KM7@84](B)