7

気にせず、質問だけを見たい場合は、バックストーリーを一番下までスキップしてください。

だから私はしばらくの間LISPで遊んでいます。いくつかの基本的な機能、いくつかのクラス、およびファイルIO。この記事に出くわしたとき:

http://www.adampetersen.se/articles/lispweb.htm

そして、私はWebアプリケーションにlispを使ってみることに興奮しています。パッケージをダウンロードしに行きますが、一生の間、AllegroIDEにパッケージをロードする方法がわかりません。

うーん...わかりました。hunchentootサイトによると、基本的なパッケージの多くはLispWorksに含まれています。だから私はそれをダウンロードします。これらのIDEにダウンロードしたパッケージのソースを取得する方法がまだわかりません。彼らはパッケージのバイナリを持っているようですか?

たぶん、私のubuntuサーバーに切り替えて、すべてのパッケージをapt-getし、slimeをセットアップします(lispを学びたかったので、これまで使用したことはありません。emacsとlispを同時に学ぶのは本当に大変なことのようです)。私は必要なすべてのパッケージを入手してスライムをロードしますが、同じ問題が利用できません。

私はもう少し掘り下げて、ASDFと呼ばれるこのプログラムを見ます。ASDFはlisp用のパッケージビルダーのようなもののように見えますか?紛らわしいように思えます。この時点で私はあきらめようとしています。


あなたがまだこれを読んでいるなら、ここに私の質問があります。
1.これらのパッケージのソースをlisp環境にロードするにはどうすればよいですか。lispを学ぶのはそれほど難しいことではありませんが、環境に関する情報はまばらです。ASDFでダウンロードしたパッケージをビルドする必要がありますか?
2.すべてのツールを事前に学習するために大量の時間を短縮することなく、誰かがLispで起動して実行するための簡単な方法はありますか?

4

4 に答える 4

8

うーん...わかりました。hunchentootサイトによると、基本的なパッケージの多くはLispWorksに含まれています。だから私はそれをダウンロードします。

これは、作者がHunchentootでLispworks固有のコードをたくさん書いたことを意味します。HunchentootがLispworksでのみ機能するという意味ではありません。

これらのIDEにダウンロードしたパッケージのソースを取得する方法がまだわかりません。

ASDFを使用する必要があります。

彼らはパッケージのバイナリを持っているようですか?

それはありそうもない。

まあ、おそらく私のubuntuサーバーに切り替えてapt-すべてのパッケージを取得し、スライムをセットアップします>(私はlispを学びたかったので以前は使用していませんでした。emacsとlispを同時に学ぶことは本当に気が遠くなるようでした)。

その時はやらないでください。EmacsやSlimeを使用する必要はありません。

私は必要なすべてのパッケージを入手してスライムをロードしますが、同じ問題が利用できません。

迅速な結果を得るには、clbuildを試してください:http://common-lisp.net/project/clbuild/

私はもう少し掘り下げて、ASDFと呼ばれるこのプログラムを見ます。ASDFはlisp用のパッケージビルダーのようなもののように見えますか?紛らわしいように思えます。

ASDFは、CommonLispアプリケーション用のMakefileに少し似ています。

この時点で私はあきらめようとしています。

それはあなたがそうすることができる最悪のことについてです(この時点または他の時点で)。代わりに、ここに問題を投稿することにしたことをうれしく思います。

  1. これらのパッケージのソースをlisp環境にロードするにはどうすればよいですか。lispを学ぶのはそれほど難しいことではありませんが、環境に関する情報はまばらです。ASDFでダウンロードしたパッケージをビルドする必要がありますか?

clbuildは必要なものをすべて提供するはずですが、使用したくない場合のヒントを次に示します。

  1. CLISP、SBCL:ASDFはLispの一部です。を実行します(require :asdf)。Lispworks、Allegro:ASDFをダウンロードしてロードする必要があります。asdf.lispをどこかに保存してから実行します(load "/path/to/asdf.lisp")
  2. すべてのライブラリ/アプリケーション(ASDFの「システム」)について、ダウンロードしてどこかに解凍する必要があります。すべての依存関係が満たされるまで繰り返します。これらの場所(ディレクトリ)を書き留めます。
  3. 手順2のすべての場所について、その場所をASDFレジストリに追加します(push "/path/to/dir/" asdf:*central-registry*)。末尾のスラッシュを忘れないでください。
  4. を使用してシステムをロードします(asdf:oos 'asdf:load-op :system-name)
  1. 誰かがすべてのツールを事前に学ぶために多くの時間をスピードアップする必要なしに、Lispで立ち上がって実行するための簡単な方法はありますか?

上記を参照してください-clbuildを使用します。

于 2009-07-11T05:59:42.587 に答える
6

Ubuntuで最も簡単な方法は、そのディストリビューションに含まれているパッケージを使用することです。何かを試したいだけなら「OK」ですが、これらのバージョンは比較的古いことがよくあります。sbclパッケージとをお勧めしますslime。emacsをまだ知らない場合は、組み込みのチュートリアル(C-h t(Control-hを押し、リリースしてからtを押す))を使用して、非常に速くそれを理解できます。

その後、emacsを起動し、slimeを起動し(からM-x slime)、lispファイルを開き(C-x C-f ~/lisp/first-try.lisp)、準備が整います。Lispのチュートリアルとして、Practical Common Lispはとても素敵な本であり、無料で入手できると思います。

さて、あなたがLispを好きになったとき、あなたはもっと最新のパッケージが欲しいかもしれません。そのためにclbuildを使用することをお勧めします(FAQを含む詳細については、リンクを参照してください)。次に、新しいsbclをビルドすることもできます(ディストリビューションのバージョンによってブートストラップされます)。

ちなみに、 ASDFは単なるシステム定義機能です。パッケージをダウンロードする方法はわかりません。実行中のLispイメージにシステムをロードする方法しか知りません。言い換えれば、それは、いくつかの「システム」(ライブラリ)が正しい順序で構成されている複数のファイルを自動的にロードするという問題を解決するだけです。最新バージョンでは、パッケージを(インストール後、たとえばclbuildを介して)簡単にロードできます。

(asdf:load-sys 'foo)

古いバージョンは、ASDFの内部操作の概念を示しています。

(asdf:operate 'asdf:load-op 'foo)

上記load-sysは、この一般的なユースケースの省略形です。詳細については、ASDF入門ガイドを参照してください。ASDFもSBCLに含まれています。

ソースファイルをロードすると、自動的にコンパイルされ(.faslファイルを生成(高速ロード))、次回のロードがはるかに高速になります。

于 2009-07-10T16:31:46.507 に答える
2

おそらく、始めるための最も速い方法の1つは、ボックス内のLisp(またはLispBoxのようなスピンオフ)を使用することです。これらはあなたが必要とするすべての完全なセットです。

Lispツールとドキュメントを備えた起動可能なCDROMであるLispResourceKitを試すこともできます。これらはすべてすでにセットアップされています。CDROMドライブに入れて起動するだけです!

于 2009-07-11T00:17:31.133 に答える
2

これらの答えはすべて良いですが、Quicklispの新しい人気で少し時代遅れになっています。非常に大まかに言えば、quicklispはasdfが作成するパッケージマネージャーです。Quicklispがシステムにインストールされると、(ql:quickload "name of lisp library")そのライブラリをlisp環境にロードするために使用できます。これには、必要に応じて、ライブラリとその依存関係をダウンロードすることも含まれます。たとえば、Hunchentootとそのすべての依存関係をダウンロード、インストール、およびロードするには、を使用します(ql:quickload "hunchentoot")。後のlispセッションでは、(ql:quickload "hunchentoot")再度呼び出すと、ダウンロードおよびインストール済みのバージョンが読み込まれるだけで、ql:quickloadローカルまたはリモートで利用可能なライブラリを簡単に読み込むことができます。Quicklispをインストールするには、quicklisp.orgを参照してください。

より詳細な説明

Lispは、ライブラリに関しては他の言語とは少し異なった働きをします。最初に知っておくべきことは、言語自体はライブラリ機能をほとんど提供しないということです-それはload(REPLで入力したかのようにファイルの各行を通過して実行します)そしてcompile-file(「高速ロード」ファイルを作成します) 、ファイルのプリコンパイルされたバージョンであり、loadはるかに高速に実行できます)。コア言語が提供するものだけを使用して、ライブラリをロードするには、その各ファイルとそのファイルload(または(load (compile-file "filename"))、ロード速度/パフォーマンスを向上させるためにライブラリ)に移動する必要があります。これは面倒だったので、ライブラリのロードを管理するためにさまざまなライブラリが作成されました。asdfは王様です(多くのLisp実装が実際にそれをバンドルしているほどです)。asdfの用語では、ライブラリは「システム」と呼ばれ、.asdfファイルは、ライブラリのロードに関連するすべてのメタデータを記述します。ライブラリが依存するシステムと、ファイルをロードする順序はほとんどですが、それでもかなり複雑になる可能性があります。次に、Quicklispはasdfの上に配置されます。基本的に、asdfがシステムを見つけることができないことを発見すると、Quicklispはステップインし、そのシステムがQuicklispのオンラインリポジトリの1つから利用可能かどうかを確認し、利用できる場合はダウンロードしてasdfを続行します。ql:quickload基本的には、quicklispが必要に応じて支援できるようにするシステムをロードするためのasdf機構の単なるラッパーです。

于 2016-08-29T21:06:05.047 に答える