如何在Ubuntu的CLISP下安装“port”包

4
我正在尝试跟随这个教程:http://cl-cookbook.sourceforge.net/sockets.html。由于端口包的原因,我无法使其正常工作。首先,(in-package :port) 无法工作,它说找不到该包。所以我将其更改为 (clc:clc-require :port),但这会导致另一个错误:
INTERN("STRUCTURE-KCONSTRUCTOR"): #<PACKAGE SYSTEM> is locked ...

在Ubuntu下,我应该做些什么才能让它正常工作?

4个回答

3
很不幸,cl-cookbook仍然引用来自CLOCC的PORT。我特别不建议使用PORT和CLOCC。
好消息是,现在有更新、更好的套接字库可供使用,您将不会遇到太多困难。以下是您可以选择的选项:
- usocket 是一个可移植库,它抽象了各种Lisp实现中的套接字功能。它是trivial-sockets的精神继承者,许多Common Lisp库今天都依赖于usocket。
我建议新用户使用usocket。
- 另一个竞争者是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,但是运行clbuild而不是Lisp的Debian软件包。请注意,clbuild需要上游CLISP,而不是Ubuntu提供的CLISP。


2

使用 apt-get install cl-port 命令安装 cl-port 包。


1

看一下 asdf-install。设置好后,Lisp 包的安装就像这样简单:

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

无论如何,clisp已经不再那么常用了。看看最广泛使用的common lisp实现SBCL

此外,如果想学习common lisp,最好从一本优秀且免费的书Practical Common Lisp开始。


1

requirein-package是两个不同的概念。

  • require将某些代码加载到正在运行的Lisp映像中,以便使其可用(如果它尚未存在)。
  • in-package将“当前”命名空间更改为特定包,以便您可以调用此包中的对象而无需使用包前缀(例如,split而不是cl-ppcre:split)。当然,该包必须已经在运行时“存在”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接