4

私は、以前cとpythonに精通しているCommon Lisp(MicrosoftWindowsでClozureCommon Lispを使用)の新しい人です。ですから、ここでの質問はばかげているかもしれませんが、私に助けを与えるために辛抱強く待ってください。

1)一般的なlispスクリプトを実行する通常の方法は何ですか?

ここで、Windowsの下にbatファイルを作成して、ccl exe(wx86cl.exe)を呼び出し(progn (load "my_script_full_path") (ccl:quit))、スクリプトを「実行」するたびに評価します。これは、Common Lispのスクリプトを「実行」するための標準的な方法ですか?
これについて他に何か提案はありますか?

(require 'cxml)2)との違いは何(asdf:operate 'asdf:load-op :cxml)ですか?

それらは私のスクリプトでも同じようですが、どちらを使用すればよいですか?

3)明確な質問ではなく、無視する

4)ライブラリ(require'cxmlなど)をロードする場合、スクリプトを「実行」するたびにcxmlをロードするのに常に時間(3秒または5秒)かかります。表示する標準出力へのログも多くあります。以下では、内部の何かをチェックしているようです。簡単なテストを実行するたびに、cxmlをロードするために3〜5秒を費やす必要があるということですか?少し非効率のようで、出力にノイズがあります。なにか提案を?

私のスクリプト (require 'cxml) (some-code-using-cxml)

そして出力
; Loading system definition from D:/_play_/lispbox-0.7/quicklisp/dists/quicklisp/software/cxml-20101107-git/cxml.asd into #<Package "ASDF0">
;;; Checking for wide character support... yes, using code points.
; Registering #<SYSTEM "cxml-xml">
......
some my script output

---編集してさらに追加----

5)Lispライブラリの読み込み速度を上げるために画像をダンプする方法をほとんど忘れていると言わざるを得ません。それで、私たちが(おそらく非常に単純な)lispスクリプトを開発するための通常のプロセスは何ですか?

私が今得たものの答えに基づいて、おそらく
a)スクリプトを編集するb)REPL環境を介してテストする、SLIMEは本当に良い選択であり、<==> b c)ダンプ
の間に多くのループがあるはずです
配布する画像?(これについてはよくわかりません)

6)さらに、最終的なプログラムをリリース/配布するための一般的な方法/フォームは何ですか?

lispライブラリの場合、ソースコードをリリースするだけで、他の誰かがそれらを「ロード/要求」できるようになります。
Lispプログラムの場合、すべての機能が正常に機能することを確認したら、イメージをダンプして配布します。
私は正しいですか?

実際の製品ではどのような形式を使用しますか?読み込み速度を上げるために、常にすべてのものを最終的に画像にダンプしますか?

4

4 に答える 4

2

簡単なテストを実行するたびに、Lispを最初から開始して、すべてを再度ロードする必要はありません。より効率的な開発のために、実行中のlisp環境のリスナー(REPL)でコードをインタラクティブに評価します。

于 2011-04-14T20:06:57.207 に答える
2

1)はい、プログラム全体を実行する通常の方法は、ランチャースクリプトを使用することです。ただし、最近のWindowsには、バットインタープリターよりもはるかに優れたスクリプトサポートがあります。WindowsScriptingHostとPowerShellが標準で出荷されます。

1a)開発中は、通常、REPL(Read-Eval-Print-Loop、つまりlispコマンドライン)に入力するか、SLIME(emacsまたはxemacsの場合)のようなものを開発環境として使用します。それらが何であるかわからない場合は、それらを調べてください。Cygwinを使用してxemacsをインストールすると、さまざまなLinux風のツールにアクセスできるようになります。

2)Requireは、IIRC、標準の一部です。ASDFは技術的にはそうではなく、ライブラリをより便利に機能させるために動作するライブラリです。ASDFには、大規模なLispプログラムを実際に作成する場合に、最終的に必要となる機能がたくさんあります。

3)質問が不明確、合格。

4)1a)を参照してください-実行中のインスタンスでテストと変更を行うため、ライブラリを複数回ロードする必要がなくなります(Pythonの場合と同じように、Python replが見つかりましたか?)。さらに、プログラムが完了すると、すべてのライブラリがプリロードされたイメージをダンプできる可能性があります。

編集:追加の回答:

5)はい

6)イメージをダンプした後でも、メモリイメージをロードするためにlispバイナリを配布する必要があります。これをユーザーに透過的にするには、イメージでlispバイナリを実行するためのローダースクリプト(またはバイナリ)も必要になります。

于 2011-04-14T21:20:27.007 に答える
1

配布には、ZacharyBeaneのBuildappツールを使用します。インストールと使用が非常に簡単です。

于 2011-05-13T04:54:45.980 に答える
0

配布について-

現在のイメージを標準の実行可能ファイルとして書き出して終了するルーチンを作成しました(現在は自宅にあり、現在は利用できません)。CLISPとSBCLの両方で機能します。

よろしければ、私はそれをかき集めることができます。

于 2011-04-15T15:38:33.930 に答える