如何包括;“港口”;Ubuntu中CLISP下的包

如何包括;“港口”;Ubuntu中CLISP下的包,ubuntu,package,lisp,require,clocc,Ubuntu,Package,Lisp,Require,Clocc,我将尝试遵循本教程: 我不能让它工作,因为端口包。首先,(在package:port中)不起作用,它说找不到包。因此我将其更改为(clc:clc require:port),但这会导致另一个错误: INTERN("STRUCTURE-KCONSTRUCTOR"): #<PACKAGE SYSTEM> is locked ... INTERN(“STRUCTURE-KCONSTRUCTOR”):#已锁定。。。 在ubuntu下我应该怎么做才能让它工作?看看asdf安装。设置后,l

我将尝试遵循本教程:

我不能让它工作,因为端口包。首先,
(在package:port中)
不起作用,它说找不到包。因此我将其更改为
(clc:clc require:port)
,但这会导致另一个错误:

INTERN("STRUCTURE-KCONSTRUCTOR"): #<PACKAGE SYSTEM> is locked ...
INTERN(“STRUCTURE-KCONSTRUCTOR”):#已锁定。。。

在ubuntu下我应该怎么做才能让它工作?

看看asdf安装。设置后,lisp软件包的安装非常简单:

(require 'asdf-install)
(asdf-install:install 'package-name)
不管怎样,clisp已经不再使用了。请看一下SBCL,它是使用最广泛的通用lisp实现


另外,为了学习通用lisp,你最好从实用的通用lisp开始,这是一本优秀的免费书籍。

使用apt get Install cl port安装cl port包
require
和包中的
是两件不同的事情

  • require
    将某些代码加载到正在运行的lisp映像中,以使其可用(如果还没有)
  • 在包中
    将“当前”命名空间更改为某个包,这样您就可以从该包中调用对象,而无需包前缀(例如,
    split
    而不是
    cl-ppcre:split
    )。当然,这个包必须已经在运行时中“存在”

不幸的是,cl食谱仍然提到CLOCC的港口。我特别建议不要使用PORT和CLOCC

好消息是,存在更新、更好的套接字库,使用它们不会有太多问题。以下是您的选择:

  • 是一个可移植性库,它抽象了各种Lisp实现中的socket特性。它是普通套接字的精神继承者,许多常见的Lisp库现在都依赖于usocket

    我向新用户推荐usocket。

  • 另一个竞争者是,它使用FFI重新实现套接字,而不是基于实现的设施。它还支持其他雄心勃勃的创新,比如替代通用Lisp路径名、I/O多路复用和它自己的流抽象

    愿意阅读源代码和单元测试的程序员会发现iolib很有趣,但它仍然处于不断变化的状态,并且缺乏文档

    我向狂热的黑客推荐iolib。

许多安装方法都是可能的。作为Ubuntu用户,您可以使用aptitude:

$ aptitude install cl-usocket
$ clisp
[1]> (asdf:operate 'asdf:load-op :usocket)
请注意,Debian和Ubuntu中常见的Lisp软件包通常已经过时,与上游软件包有很大不同。如果您正在网上寻求帮助,如果您切换到这些软件包的上游版本,您将得到更多有用的回复

就我个人而言,我使用Debian,但运行Lisp而不是Debian包。请注意,clbuild需要上游CLISP,而不是Ubuntu提供的CLISP