2009-02-18 18 views
4

Я пытаюсь следовать этому учебнику: http://cl-cookbook.sourceforge.net/sockets.htmlКак включить пакет «порт» под CLISP в Ubuntu

И я не могу заставить его работать из-за пакет порта. Сначала (in-package :port) не работал, он сказал, что пакет не найден. Так что я изменил его на (clc:clc-require :port), но это вызывает другую ошибку:

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

Что я должен сделать под убунту, чтобы заставить его работать?

ответ

1

Посмотрите на asdf-install. После установки его, Lisp пакеты устанавливаются так же просто, как:

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

В любом случае, CLISP не то, что используется больше. Взгляните на SBCL, который наиболее широко используется в распространенной реализации.

Кроме того, для изучения общего lisp вам лучше начать с Практические общие Lisp как отличная и бесплатная книга.

2

Установите пакет cl-port с помощью apt-get install cl-port.

1

require и in-package это две разные вещи.

  • require загружает определенный код в запущенном LISP изображения, чтобы сделать его доступным (если он еще не существует).
  • in-package изменяет «текущие» пространство имен для определенного пакета, так что вы можете назвать объекты из этого пакета без пакета префикса (например split вместо cl-ppcre:split). Разумеется, этот пакет должен «существовать» в среде выполнения.
3

К сожалению, cl-cookbook по-прежнему относится к ПОРТУ от CLOCC. Я рекомендую, в частности, против PORT и CLOCC.

Хорошие новости новее, лучшие библиотеки сокетов существуют, и у вас не будет особых проблем с их использованием. Вот варианты:

  • usocket библиотека портативность, которая абстрагирует над функциями сокетов в различных реализациях Lisp. Это духовный преемник тривиальных сокетов, и многие библиотеки Common Lisp зависят от usocket сегодня.

    Я рекомендую использовать usocket для новых пользователей.

  • Другой претендент iolib, который повторно использует сокеты, используя FFI, вместо того чтобы строить на объектах реализации. Он также обладает другими амбициозными нововведениями, такими как замена общих путей Lisp, мультиплексирования ввода-вывода и собственной абстракции потока.

    Программисты, желающие прочитать исходный код и модульные тесты, найдут iolib приятным, но он все еще находится в состоянии потока и не имеет документации.

    Я рекомендую iolib для жадных хакеров.

Многие способы установки возможны. Как пользователь Ubuntu, вы можете просто использовать способности:

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

Учтите, что пакеты Common Lisp в Debian и Ubuntu часто устарели и довольно сильно отличается от выше. Если вы ищете помощь в Интернете, вы получите более полезные ответы, если вы перейдете к восходящей версии этих пакетов.

Лично я использую Debian, но запустите clbuild вместо пакетов Debian для Lisp. Обратите внимание, что clbuild необходимо перед CLISP, а не CLISP, который отправляет Ubuntu.

 Смежные вопросы

  • Нет связанных вопросов^_^