4

私はこのチュートリアルに従おうとしています: http://cl-cookbook.sourceforge.net/sockets.html

ポートパッケージが原因で動作しません。最初は(in-package :port)機能しませんでした。パッケージが見つからないと言われました。だから私はそれを変更しました(clc:clc-require :port)が、これは別のエラーを引き起こします:

INTERN("STRUCTURE-KCONSTRUCTOR"): #<PACKAGE SYSTEM> is locked ...

ubuntuで機能させるにはどうすればよいですか?

4

4 に答える 4

3

cl-cookbook がまだ CLOCC の PORT を参照しているのは残念です。特に PORT と一般的な CLOCC には反対することをお勧めします。

良いニュースは、より新しく、より優れたソケット ライブラリが存在することであり、代わりにそれらを使用してもそれほど問題はありません。オプションは次のとおりです。

  • usocketは、さまざまな Lisp 実装のソケット機能を抽象化する移植性ライブラリです。これは trivial-socket の精神的な後継者であり、今日では多くの Common Lisp ライブラリが usocket に依存しています。

    新規ユーザーには usocket をお勧めします。

  • もう 1 つの競合相手はiolibで、これは実装の機能に基づいて構築するのではなく、FFI を使用してソケットを再実装します。また、Common Lisp パス名の置き換え、I/O 多重化、独自のストリーム抽象化など、他の野心的なイノベーションも備えています。

    ソース コードと単体テストを読みたいプログラマーは iolib を楽しめると思いますが、まだ流動的な状態であり、ドキュメントが不足しています。

    熱心なハッカーには iolib をお勧めします。

多くのインストール方法が可能です。Ubuntu ユーザーは、aptitude を使用できます。

$ aptitude install cl-usocket
$ clisp
[1]> (asdf:operate 'asdf:load-op :usocket)

Debian と Ubuntu の Common Lisp パッケージはしばしば時代遅れであり、アップストリームとはかなり異なることに注意してください。オンラインでヘルプを探している場合は、それらのパッケージのアップストリーム バージョンに切り替えると、より役立つ回答が得られます。

個人的には Debian を使用していますが、Lisp 用の Debian パッケージの代わりにclbuildを実行しています。clbuild には、Ubuntu が出荷する CLISP ではなく、上流の CLISP が必要であることに注意してください。

于 2009-02-20T13:54:40.363 に答える
2

を使用してcl-portパッケージをインストールしますapt-get install cl-port

于 2009-02-18T18:42:36.940 に答える
1

asdf-installを見てください。セットアップ後、lisp パッケージは次のように簡単にインストールできます。

(require 'asdf-install)
(asdf-install:install 'package-name)

とにかく、clispはもう使われていません。最も広く使用されている一般的な Lisp 実装であるSBCLを見てください。

また、Common Lisp を学ぶには、優れた無料の本であるPractical Common Lispから始めるのがよいでしょう。

于 2009-02-18T18:32:03.597 に答える
1

requirein-packageは 2 つの異なるものです。

  • require実行中の Lisp イメージに特定のコードをロードして、利用できるようにします (存在しない場合)。
  • in-package「現在の」名前空間を特定のパッケージに変更します。これにより、このパッケージからオブジェクトをパッケージ接頭辞なしで (たとえばsplitの代わりにcl-ppcre:split) 呼び出すことができます。もちろん、このパッケージは、そのためにすでにランタイムに「存在」している必要があります。
于 2009-02-18T19:48:45.580 に答える