3

私は Lisp (SBCL) を学んでいて、Lisp コードの構造について混乱しています。Lisp パッケージは Python のモジュールに似ていると思いますか?

私はこのようなことをしたいです。

utility.py:

def foo():
    print "And there is silence!"

main.py:

import utilities as u

u.foo()

パッケージ、ロード、および asdf システムを調べました。全体がどのように組み合わされているのか、いまだに理解できていません。

4

3 に答える 3

2

指摘されているように、他の言語と比較して:

  • パッケージは名前空間に対応します。
  • システムは、モジュールまたはライブラリ(つまり、コードのコレクション) に対応します。

パッケージについて: (シンボルの競合などを避けるために必要な) パッケージを理解するために、Ron Garret のComplete Idiot's Guide to Common Lisp Packages を読むことを強くお勧めします。

于 2011-02-17T15:35:49.210 に答える
2

パッケージは、シンボルの名前空間です。シンボルとの間でシンボルをインポートおよびエクスポートできます。シンボルは 1 つのパッケージにインターンされている可能性があります。パッケージは他のパッケージで使用できます。

プログラムはシステムに構造化されています。システムは、使用するシステム ツールに応じて、ファイル、依存関係、ビルド ルール、デフォルト情報などのコレクションです。ASDFもその1つです。ライブラリのロードは、システムのロードによって行われます。システムは、コンパイル、印刷、...

パッケージとシステムは互いに独立しており、関連していません。

ソフトウェア、ライブラリ、またはプログラムの大部分ごとに、1 つ以上のカスタム パッケージを使用することは理にかなっています。これにより、ロードされた他のソフトウェアのシンボルとの名前の衝突が回避されます。

于 2011-02-16T20:10:51.520 に答える