Reading Gauche/vm/insn/CLOSURE


Top / Reading Gauche / vm / insn / CLOSURE

CLOSURE

CLOSURE

説明

クロージャを作り val0 レジスタにセットする。
オペランドはコンパイル済みのコード。

クロージャの実体は大まかに以下の4つから構成される。

使用例

CLOSURE

(disasm (lambda () (lambda () 3)))

// main_code

;; CLOSURE #<lambda 0> ; (lambda () 3)

;; RET

// internal_closure_0 ← #<lambda 0>の本体

;; CONSTI(3)

;; RET

関連項目

コメント

最新の1000件を表示しています。 コメントページを参照

お名前:
  • 「クロージャが参照している自由変数を保持する環境。」の変数の部分に違和感を感じました。環境フレームには手続きへのポインタも含まれていると思います。 -- ココサブ 2008-03-16 (日) 01:48:28
    • SICPのP139辺りを読むと変数以外に記号という表現が使われていたりします。 -- ココサブ 2008-03-16 (日) 01:49:11
    • 関数ポインタを保存している変数と考えればいいだけの話ではあるのですが、気になったのでコメントしました。 -- ココサブ 2008-03-16 (日) 01:51:59
    • 何度もコメントすいません。調べたら変数で正しいのだと分かりました。勉強不足でした。お騒がせしました。 -- ココサブ 2008-03-16 (日) 02:18:53
    • 確認ありがとうございます。あれ。せっかくコメントをいただいたのにメールがこなかった。確認が遅れて本当にごめんなさい。 -- ひげぽん 2008-03-20 (木) 11:54:43
  • 使用例で、(disasmでの表示のように)本体コード部分とコンパイル済クロージャコード部分がわかりやすいように加筆してみましたが如何でしょうか。 -- naoya_t 2008-03-16 (日) 00:45:05
    • 分けてあるほうが分かりやすいですね。#<lambda 0>はinternal_closure_0の事だと書き加えるといいかと思いました。 -- ココサブ 2008-03-16 (日) 01:26:27
      • internal_closure_0 が #<lambda 0>の本体(コンパイル済みコード)である旨追記してみました。CLOSUREはこんな感じで良いかと思います。 -- naoya_t 2008-03-20 (木) 05:52:29
      • ありがとうございます。 -- ひげぽん 2008-03-20 (木) 11:55:03

MENU

now: 1

リンク


最新の20件
2019-06-19 2019-03-24 2019-02-26 2018-10-07 2018-09-20 2017-09-29 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-05-29 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 2679, today: 1, yesterday: 0

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:47:58 (4100d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.070 sec.