2010-12-30 11 views
0

ビルドイン方式のインタプリタを持つソフトウェアを使用しています。ユーザは、インタプリタでコマンドを入力することにより、ソフトウェアを通信/操作することができる。また、ユーザーはバイナリファイルを環境にロードすることもできます。lisp(scheme)はどのようにバイナリファイルにコンパイルできますか?

(define test (lambda() (display "This is a test!"))) ---- d:/test.scm 

そして、ロードしてより速く実行するバイナリファイルにコンパイルします。しかし、この文書はスキームコードのコンパイルに関する情報を持っていません。私は「高速ロード」は物事を読んで、evalを行う考える

(fast-load "d:/test.bin" (the-environment)) 

:コンパイルのユーザーの後 は、次のように入力してバイナリファイルを読み込むことができます。コンパイルは暗号化プロセスなのですか?誰もこれらのことを知っていますか?すべての情報をいただければ幸いです!前もって感謝します。

もう1つの例があります:AutoCADシステム。ユーザーは、AutoCADを操作するためのlispコードを書くことができます。また、ユーザーはlispコードを* .fasファイルにコンパイルしてAutoCADに読み込むこともできます。ですから、実際には暗号化プロセスであれば、どうすればコンパイラを書くことができますか?それに関する文書はありますか?

                 Joe 
+1

コードクロックを使用して、これら3つの文字をいくらか右揃えにします...うわー。 – delnan

+0

グーグル "lisp fasl"と "fasl lisp"を試してみてください。興味深いエントリがあります。 :-)私が知る限り、FASLをサポートする各Lisp実装は独自のFASL形式を持っています(あるいは、異なる実装間で生成されたFASLファイルは相互運用できません)。したがって、独自のコンパイラを書くなら、ターゲットにする1つのフォーマットを選択する。 –

+1

これは暗号化ではなく、読み取り専用ではありません。「ファストロード」ファイルは読み込み専用です。 :-) AutoCadがFASLフォーマットを文書化していない場合は、AutoLISPを生成してコンパイルすることができます。 – Ken

答えて

1

あなたは厳密に(あなたの質問に基づいてケースのように思えるのような)アプリケーションの組み込みインタプリタについて話している場合は、標準的な答えはありません。アプリケーション設計者が実装にコンパイルを組み込んで、その機能が公開されているかどうかを確認する必要があります。もしあなたが運がないなら。

スタンドアローンのSchemeアプリケーションやライブラリについて質問する場合は、多くの実装(Chickenなど)がある種のSchemeコンパイラを提供しています(前述のChicken SchemeがCに最初にコンパイルされます)。

Common Lisp(あなたのタイトルと質問に具体的にSchemeについて言及している事実を無視する)について質問していたなら。あなたは、あなたの質問の最後に述べた.faslフォーマットを生成する標準関数、compile-fileを使うことができます。

関連する問題