yarv-dev:226
From: MAEDA Atusi <maeda-yarv atusi.org>
Date: Fri, 17 Sep 2004 12:02:13 +0900
Subject: [yarv-dev:226] Re: return from orphan Proc object
SASADA Koichi <ko1 atdot.net> writes: > これに、こいつ自身に継続情報も詰め込んじゃおうかなあ、とか > 考えてるんですが、そうすると本当にどうなるかはちょっとわかり > ません。なんか出来そうな気もするんですが、やっぱりよくわから > ないな。 Procと継続は別だと思うけど... まあ、継続はProcのサブクラスと考えることもできるかも知れないが。 > で、なんでそんな無謀なことをしようとしてるかというと、 以下は、良く分かりませんでした。文章で説明されても頭が追い付かないかも。 この辺の古典は: スパゲティスタック: (環境フレーム、制御フレームが、木構造をなすような スタックをどう実装するか。フレームに参照カウントつけたり、ときどきコ ンパクションしたり。) Bobrow, D.G., and Wegbreit, B. A model and stack implementation of multiple environments. Comm. ACM 16, 10 (Oct. 1973), 591-603. マカロニスタック: (制御フレームは別のスタックにすると、ずっと効率が良 くなるという話。) Guy Lewis Steele Jr., Macaroni is better than spaghetti. In Proceedings of the Symposium on Artificial Intelligence and Programming Languages, pages 60--66. Also published as SIGPLAN Notices 12(8) and SIGART Newsletter 64, August 1977. ファントムスタック: (たいていはスタックなんだけど、「解放しちゃいけ ない」ばあいはGCに切替えるようなデータ構造。) Richard M. Stallman, Phantom Stacks: if you look too hard, they aren't there, MIT AI Memo 556 (1980) http://citeseer.ist.psu.edu/stallman80phantom.html Cheney on the M.T.A.: (データは全部スタック内に割り付けちゃう。スタック は伸びる一方で、いっぱいになったらGC。Cでポータブルに末尾再帰を実装可。) Baker, H. G.: 1994, `CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A.'. http://citeseer.ist.psu.edu/baker94cons.html フレームをスタックでなくヒープに割り付けた方が速いという主張 Andrew W. Appel. Garbage collection can be faster than stack allocation. Information Processing Letters, 25(4):275--279, June 1987. http://citeseer.ist.psu.edu/appel87garbage.html 上への反論 James S. Miller and Guillermo J. Rozas, Garbage Collection is Fast, but a Stack is Faster, MIT AI MEMO-1462, 1994 http://citeseer.ist.psu.edu/miller94garbage.html あたりかなあ。 前田敦司 -- ML: yarv-dev quickml.atdot.net 使い方: http://www.atdot.net/~ko1/quickml
185 2004-09-15 21:12 [ko1 atdot.net ] return from orphan Proc object 187 2004-09-15 22:02 ┣[maeda-yarv atusi.org] 188 2004-09-16 01:01 ┃┗[matz ruby-lang.org ] 190 2004-09-16 01:45 ┃ ┗[ko1 atdot.net ] 192 2004-09-16 02:13 ┃ ┗[matz ruby-lang.org ] 193 2004-09-16 07:53 ┃ ┗[ko1 atdot.net ] 194 2004-09-16 08:14 ┃ ┗[matz ruby-lang.org ] 195 2004-09-16 08:37 ┃ ┣[ko1 atdot.net ] 196 2004-09-16 08:50 ┃ ┃┣[matz ruby-lang.org ] 198 2004-09-16 12:11 ┃ ┃┗[maeda-yarv atusi.org] 202 2004-09-16 16:32 ┃ ┃ ┗[ko1 atdot.net ] 211 2004-09-16 17:52 ┃ ┃ ┗[maeda-yarv atusi.org] 214 2004-09-16 18:02 ┃ ┃ ┗[ko1 atdot.net ] 197 2004-09-16 11:47 ┃ ┗[maeda-yarv atusi.org] 199 2004-09-16 14:04 ┃ ┣[matz ruby-lang.org ] 200 2004-09-16 16:23 ┃ ┃┣[ko1 atdot.net ] 204 2004-09-16 16:58 ┃ ┃┃┣[matz ruby-lang.org ] 208 2004-09-16 17:22 ┃ ┃┃┃┗[ko1 atdot.net ] 209 2004-09-16 17:30 ┃ ┃┃┃ ┗[matz ruby-lang.org ] 212 2004-09-16 17:53 ┃ ┃┃┃ ┗[ko1 atdot.net ] 216 2004-09-16 18:18 ┃ ┃┃┃ ┗[matz ruby-lang.org ] 207 2004-09-16 17:19 ┃ ┃┃┗[maeda-yarv atusi.org] 210 2004-09-16 17:42 ┃ ┃┃ ┗[ko1 atdot.net ] 213 2004-09-16 18:01 ┃ ┃┃ ┣[maeda-yarv atusi.org] 219 2004-09-16 18:24 ┃ ┃┃ ┃┗[ko1 atdot.net ] 224 2004-09-17 00:21 ┃ ┃┃ ┃ ┗[maeda-yarv atusi.org] 225 2004-09-17 00:45 ┃ ┃┃ ┃ ┗[ko1 atdot.net ] -> 226 2004-09-17 12:02 ┃ ┃┃ ┃ ┗[maeda-yarv atusi.org] 227 2004-09-17 12:11 ┃ ┃┃ ┃ ┣[ko1 atdot.net ] 228 2004-09-17 13:38 ┃ ┃┃ ┃ ┗[ko1 atdot.net ] 218 2004-09-16 18:22 ┃ ┃┃ ┗[matz ruby-lang.org ] 220 2004-09-16 18:31 ┃ ┃┃ ┗[ko1 atdot.net ] 221 2004-09-16 19:03 ┃ ┃┃ ┗[matz ruby-lang.org ] 222 2004-09-16 19:08 ┃ ┃┃ ┗[ko1 atdot.net ] 223 2004-09-16 19:12 ┃ ┃┃ ┗[ko1 atdot.net ] 201 2004-09-16 16:33 ┃ ┃┗[maeda-yarv atusi.org] 206 2004-09-16 17:01 ┃ ┃ ┗[matz ruby-lang.org ] 215 2004-09-16 18:06 ┃ ┃ ┗[maeda-yarv atusi.org] 217 2004-09-16 18:20 ┃ ┃ ┗[matz ruby-lang.org ] 203 2004-09-16 16:38 ┃ ┗[ko1 atdot.net ] 189 2004-09-16 01:04 ┗[matz ruby-lang.org ] 191 2004-09-16 01:51 ┗[ko1 atdot.net ] 205 2004-09-16 16:58 ┗[ko1 atdot.net ]