# Callcc, each and local val

**URL:** <https://www.ruby-forum.com/t/callcc-each-and-local-val/105394>\
**Category:** Development\
**Created:** [May 29, 2007, 3:54pm UTC](https://www.ruby-forum.com/t/callcc-each-and-local-val/105394 "2007-05-29T15:54:14Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![sheepman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d07c76/32.png) [@sheepman](https://www.ruby-forum.com/u/sheepman)\
**Post date:** [May 29, 2007, 3:54pm UTC](https://www.ruby-forum.com/t/callcc-each-and-local-val/105394/1 "2007-05-29T15:54:14Z")

</div>

e$B$3$s$P$s$O!"e(Bsheepman e$B$G$9!#e(B

trunk e$B$Ne(B callcc e$B$K4X$7$F$G$9!#e(B  
Array#each e$B$N%V%m%C%/$NCf$Ge(B callcc  
e$B$r8F$s$@;~$N!"%m!\<%+%kJQ?t$Ne(B  
e$B;2\>H$,$\*$+$7$$$G$9!#e(B

$ cat t.rb  
vv = 0  
$c = 0  
[1, 2, 3].each{|i|  
callcc {|k| $k = k}  
$c += 1  
vv += 1  
}  
p [vv, $c]  
$k.call if vv \< 10 and $c \< 10

$ ruby-1.8 -v t.rb  
ruby 1.8.6 (2007-04-20 patchlevel 5000) [i686-linux]  
[3, 3]  
[4, 4]  
[5, 5]  
[6, 6]  
[7, 7]  
[8, 8]  
[9, 9]  
[10, 10]

$ ruby-1.9 -v t.rb  
ruby 1.9.0 (2007-05-29 patchlevel 0) [i686-linux]  
[3, 3]  
[3, 4]  
[3, 5]  
[3, 6]  
[3, 7]  
[3, 8]  
[3, 9]  
[3, 10]

---

<div class="post-metadata">

**Author:** ![sheepman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d07c76/32.png) [@sheepman](https://www.ruby-forum.com/u/sheepman)\
**Post date:** [May 29, 2007, 8:32pm UTC](https://www.ruby-forum.com/t/callcc-each-and-local-val/105394/2 "2007-05-29T20:32:23Z")

</div>

e$B!!$5$5$@$G$9!#e(B

e$B!!$3$NLdBjE@$K5$IU$$$F$/$l$kJ}$,$$$FBgJQ4n$s$G$$$^$9!#e(B

e$B!!$^$:!"7QB3$,%-%c%W%A%c$9$kBP\>]$G$9$,!"e(B1.9  
e$B$N\<BAu$G$O$9$Y$F$Ne(B  
e$B%m!\<%+%kJQ?t$rJ]B8$9$k$3$H$G\<B8=$7$F$$$^$9!#e(B1.8  
e$B$G$O!"7QB3$G$Oe(B  
e$B%m!\<%+%kJQ?t$OJ]B8$7$F$$$^$;$s$G$7$?!#e(B

e$B!!$I$&$9$k$Y$-$J$s$G$7$g$&$+!#7QB3$O!V$3$&$G$J$1$l$P$J$i$J$$!We(B  
e$B$H$$$&$N$O!"$h$/$o$+$C$F$$$^$;$s!#C/$+!"!V!A$@$+$i!A$G$"$k$Y$-e(B  
e$B$@!W$H$$$&OC$r$7$F$b$i$($J$$$G$7$g$&$+!#e(B

e$B!!e(BScheme e$B$N\>l9g$G$9$H!"e(B

(let ((v #f))  
(call/cc (lambda ©  
(set! v #t)  
(c #t)))  
(print v)) ;=\> #t

e$B$H$J$j!"%m!\<%+%kJQ?t$,JQ99$5$l$F$$$k$3$H$,$o$+$j$^$9!#e(B1.8 e$B0Je(B  
e$BA0!"$\*$h$Se(B Scheme e$B$J$I$H$"$o$;$k$Y$-$G$7$g$&$+!#e(B

e$B!!\<BAu%l%Y%k$NOC$r$9$k$H!"e(BVMe$B%9%?%C%/$r4JC1$K%3%T!\<$9$k$@$1$G$9e(B  
e$B$N$G!"J]B8$7$F$$$J$$$H$$$&$3$H$G$9!#e(B

e$B!!\<B$O!"\<+J,$be(B

cont = nil  
callcc{|c| cont = c  
}  
cont.call

e$B$H$$$&%3!\<%I$,F0$+$:!"\>/$7G:$s$G$7$^$$$^$7$?!#e(B

e$B!!$A$g$C$H!"\<BAuJ}K!$,$&$^$$$3$H;W$$Ib$+$P$J$+$C$?$s$G$9$,!“3Fe(B  
e$B%9%3!\<%W$Ge(B binding  
e$BAjEv$r$d$k$h$&$K$9$l$P=PMh$k$N$+$J$!!”$H$Oe(B  
e$B;W$$$^$9!#e(B

sheepman e$B$5$s$O=q$-$^$7$?e(B:

---

<div class="post-metadata">

**Author:** ![sheepman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d07c76/32.png) [@sheepman](https://www.ruby-forum.com/u/sheepman)\
**Post date:** [May 30, 2007, 7:59am UTC](https://www.ruby-forum.com/t/callcc-each-and-local-val/105394/3 "2007-05-30T07:59:27Z")

</div>

e$B!!$5$5$@$G$9!#e(B

e$B!!BP1~$,$9$0$K=PMh$=$&$@$C$?$N$G!"$=$N$h$&$J\<BAu$K$7$^$7$?!#e(B

Yukihiro M. e$B$5$s$O=q$-$^$7$?e(B:

---

<div class="post-metadata">

**Author:** ![sheepman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d07c76/32.png) [@sheepman](https://www.ruby-forum.com/u/sheepman)\
**Post date:** [May 29, 2007, 8:57pm UTC](https://www.ruby-forum.com/t/callcc-each-and-local-val/105394/4 "2007-05-29T20:57:25Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:30834] Re: callcc, each and local val”  
on Wed, 30 May 2007 03:31:26 +0900, SASADA Koichi [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
writes:

|(let ((v #f))  
| (call/cc (lambda (c)  
| (set! v #t)  
| (c #t)))  
| (print v)) ;=\> #t  
|  
|e$B$H$J$j!“%m!\<%+%kJQ?t$,JQ99$5$l$F$$$k$3$H$,$o$+$j$^$9!#e(B1.8 e$B0Je(B  
|e$BA0!”$\*$h$Se(B Scheme e$B$J$I$H$"$o$;$k$Y$-$G$7$g$&$+!#e(B

e$B8D?ME\*$K$O$=$N$h$&$J5sF0$r4|BT$7$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![sheepman](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d07c76/32.png) [@sheepman](https://www.ruby-forum.com/u/sheepman)\
**Post date:** [May 30, 2007, 10:24am UTC](https://www.ruby-forum.com/t/callcc-each-and-local-val/105394/5 "2007-05-30T10:24:44Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:30841] Re: callcc, each and local val”  
on Wed, 30 May 2007 14:58:43 +0900, SASADA Koichi [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
writes:

|e$B!!BP1~$,$9$0$K=PMh$=$&$@$C$?$N$G!"$=$N$h$&$J\<BAu$K$7$^$7$?!#e(B

e$B$"$j$,$H$&$4$6$$$^$9!#e(B
