【问题标题】:How to include "port" package under CLISP in Ubuntu如何在 Ubuntu 的 CLISP 下包含“port”包
【发布时间】:2010-10-08 09:58:28
【问题描述】:

我正在尝试遵循本教程: http://cl-cookbook.sourceforge.net/sockets.html

由于端口包,我无法让它工作。首先(in-package :port) 不起作用,它说找不到包。所以我把它改成了(clc:clc-require :port) 但这会导致另一个错误:

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

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

【问题讨论】:

    标签: ubuntu package lisp require clocc


    【解决方案1】:

    不幸的是,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 包。

      【讨论】:

        【解决方案3】:

        看看 asdf-install。设置好之后,lisp 包的安装就这么简单:

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

        无论如何,clisp 已经不再使用了。看看 SBCL,它是最广泛使用的通用 lisp 实现。

        另外,为了学习 common lisp,您最好从 Practical Common Lisp 作为一本优秀且免费的书开始。

        【讨论】:

          【解决方案4】:

          requirein-package 是两个不同的东西。

          • require 将某些代码加载到正在运行的 lisp 映像中,以使其可用(如果它不存在的话)。
          • in-package 将“当前”命名空间更改为某个包,以便您可以在没有包前缀的情况下调用此包中的对象(例如split 而不是cl-ppcre:split)。当然,这个包必须“存在”在运行时中。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-02-24
            • 1970-01-01
            • 2021-08-15
            • 2020-12-04
            • 2020-06-09
            • 2011-02-13
            • 2013-10-24
            相关资源
            最近更新 更多