質問

って読書を通じてSICP(構造とInterprationのコンピュータプログラム)やった励起に発見しこの素晴らしい特殊な形式:"make-環境"、を組み合わせて使うとエバールとして書面のモジュラーコードの抜粋からの第4.3章"のパッケージ):

(define scientific-library
  (make-environment
   ...
   (define (square-root x)
    ...)))

そこで

((eval 'square-root scientific-library) 4)

そのとえば、次へを発揮 正確に を利用したいという-、エレガントな、ライト、ミニマリストの仕事は"○○"とスタイルのスキーム...彼らは"連結"と"タイプ"は、実際に何をしたら返されるので"環境"の特別形式(のvtable)、arg("国家")...

嬉しかったです 正確に 私は見てないという多型派遣による"シンボル"スキームがなく書く明確なコードまたはマクロです。

すなわちを実現したい"オブジェクト"は、 二つの 機能を呼びかけ異なる背景の中で...ものにならないようにしたいを参照して"自動車"や"cdr"ともいわれ、両 宣言評価 してその記号名です。

とにかく、私はこんな起こった日(右)災害時帰宅支援およびアクセスすることとする。

想像私は失望した時は、以下の両方のPLTスキームシェスキーム:

> (make-environment (define x 3))
Error: invalid context for definition (define x 3).
> (make-environment)
Error: variable make-environment is not bound.

何が起きたのか、"環境"として参照されるSICP?すべてだった雅な、そんななバージョンでサポートされる現代スキームの通訳者

その理由?まだ、"環境"に様々な名前がつけられてい?

情報は見つかり降

ましたので、オンラインバージョン:

http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-28.html#%_sec_4.3

私たディスカッションのSICP.第二弾が表示される情報の管理についての議論のパッケージ部門では非決定論的プログラミング、"アンプ"。

役に立ちましたか?

解決

後より掘り周りを見るこ スレッド情報 にnewsnet:

"のR5RS<エバール>および環境指示子では、 人常に嫌い、第一級の環境やしたい 制限エバール>、お受けできません/understand<エバール>なし 第二引数である環境です。"

また、この"仕事と周辺":

(define-syntax make-environment 
  (syntax-rules () 
    ((_ definition ...) 
     (let ((environment (scheme-report-environment 5))) 
       (eval '(begin definition 
                     ...) 
             environment) 
       environment)))) 


(define arctic 
  (make-environment 
    (define animal 'polarbaer))) 

撮影されたものから この)

しかし、その結を採用す"メッセージ通信"のスタイルは夢のようなのだが-Iを返しますalistの機能、汎用の送信方法を呼び出し、特定機能名---ん。eこのようになっ

(define multiply
  (list
    (cons 'differentiate (...))
    (cons 'evaluate (lambda (args) (apply * args)))))

(define lookup
  (lambda (name dict)
    (cdr (assoc name dict))))

; Lookup the method on the object and invoke it
(define send
  (lambda (method arg args)
    ((lookup method arg) args))

((send 'evaluate multiply) args)

って朗読さらに、そのすべてのクロさんたかったのを採用し、完全にOOスタイルがもはや失わせないアイテムです。

他のヒント

スキームは第一級の環境でのパフォーマンス上の理由.きのスキームが作成されたものではない最速の周辺の言語による粋なもののように最初のクラスの機能continuations。追加ク環境において痛んだのです。たので、トレードオフである初期のスキーム。

次回も是非利用したいと思いまうのでMITスキームは、実際のところ、最初のクラスの環境は、おそらくこの作家の企画を教えてそのクラス(年の著書でMIT).

チェック http://groups.csail.mit.edu/mac/projects/scheme/

しかし、ことにMITのスキームをやや積極的に開発が多くの機能が本当に現代のスキームいように、海外の機能またはインタフェースのGUIです。ほとんどないためとして使用されています深刻なソフトウェア開発プロジェクトは、少なくともしない。

う古典的なディスパッチャ機能です。これは似ています。

(define (scientific-library f)
  (define (scientific-square-root x) (some-scientific-square-root x))
  (cond ((eq? f 'square-root) scientific-square-root)
        (else (error "no such function" f))))
(define (fast-library f)
  (define (fast-square-root x) (some-fast-square-root x))
  (cond ((eq? f 'square-root) fast-square-root)
        (else (error "no such function" f))))

((scientific-library 'square-root) 23)
((fast-library 'square-root) 23)

きものを組み合わせ例で学術および高速ライブラリの一つの大きな発送方法:

(define (library l f)
  (define (scientific-library f)
    ...)
  (define (fast-library f)
    ...)
  (cond ((eq? l 'scientific) (scientific-library f))
        ((eq? l 'fast) (fast-library f))
        (else (error "no such library" l))))
(library 'fast 'square-root)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top