Вопрос о новичке о Lisp и Пакетах

Язык Common LISP:

(mapc #'princ
      (reverse (maplist #'(lambda(l)
         (format nil 
            "On the ~:R day of Christmas my true love gave to me~%~{~a~%~}~%" 
                (length l) l)) 
    '("twelve drummers drumming,"
      "eleven pipers piping,"
      "ten lords a-leaping,"
      "nine ladies dancing,"
      "eight maids a-milking,"
      "seven swans a-swimming,"
      "six geese a-laying,"
      "five gold rings,"
      "four calling birds,"
      "three french hens,"
      "two turtle doves, and"
      "a partridge in a pear tree."))))

Редактирование:

Выше 412 символов, если Вы вынимаете пробел.

Этот:

(let ((g))
  (dotimes (i 12)
    (format t
        "On the ~:R day of Christmas my true love gave to me~%~{~R ~:*~
         ~[~;~;turtle doves and~;french hens,~;calling birds,~;gold rings,~
         ~;geese a-laying,~;swans a-swimming,~;maids a-milking,~
         ~;ladies dancing,~;lords a-leaping,~;pipers piping,~
         ~;drummers drumming,~]~%~}a partridge in a pear tree~2%"
        (1+ i) g)
    (push (+ i 2) g)))

344 символа, если Вы вынимаете пробел и ~ заключенные в кавычки новые строки в строке формата:

(let((g))(dotimes(i 12)(format t"On the ~:R day of Christmas my true love gave to me~%~{~R ~:*~[~;~;turtle doves and~;french hens,~;calling birds,~;gold rings,~;geese a-laying,~;swans a-swimming,~;maids a-milking,~;ladies dancing,~;lords a-leaping,~;pipers piping,~;drummers drumming,~]~%~}a partridge in a pear tree~2%"(1+ i)g)(push(+ i 2)g)))

Редактирование:

похоже, что вопрос выполнил свой курс, и сайт ворчит меня для принятия ответа. Насколько я вижу, этот является самым коротким. Я немного боюсь того, что сделает сайт, если я признаю, что мой собственный ответ - вероятно, награждает меня значком Самовлюбленного человека или Онаниста.

Вы не можете принять свои собственные ответы. Достаточно ярмарка. Я оставлю его открытым. Благодаря всем, кто ответил.

7
задан Jonathan 10 July 2009 в 13:54
поделиться

3 ответа

Хм ... хорошо, сайт hunchentoot говорит, что многие базовые пакеты в LispWorks. Я скачиваю это.

Это просто означает, что автор написал много кода, специфичного для Lispworks, на Hunchentoot. Это не означает, что Hunchentoot работает только с Lispworks.

Все еще не уверен, как получить исходный код для пакетов, которые я загрузил в эти IDE.

Вам нужно использовать ASDF.

Кажется, у них есть двоичные файлы пакетов?

Это маловероятно.

Ну, может быть, я переключился на мой сервер ubuntu и apt-get все пакеты и установил slime> (Я не использовал его раньше, потому что я просто хотел изучить lisp. Изучение emacs и lisp в то же время казалось действительно устрашающим).

Не делай этого тогда. Вам не нужно использовать Emacs или Slime.

Я мог получить все необходимые пакеты и загрузить слизь, и снова такая же проблема, нет доступно.

Для быстрых результатов попробуйте clbuild: http://common-lisp.net/project/clbuild/

Я копаюсь еще немного и вижу эту программу под названием ASDF. Похоже, ASDF - это какой-то вид сборщика пакетов для lisp? Не знаю, это сбивает с толку.

ASDF немного похож на Makefile для приложений Common Lisp.

Я собираюсь сдаться на этом этапе.

Это самое худшее, что вы могли бы так ( в этот или любой другой момент). Я рад, что вместо этого вы решили опубликовать здесь свои проблемы.

  1. Как мне загрузить исходный код этих пакетов в мою среду lisp. попытаться выучить шепелявку не было слишком сложно, но информация о Среда была редкой. Нужно ли мне собирать загружаемые мной пакеты с помощью ASDF.

clbuild должен дать вам все необходимое, но вот несколько советов, если вы не хотите его использовать:

  1. CLISP, SBCL: ASDF является частью вашего Лисп. Запустите (требуется: asdf) . Lispworks, Allegro: вам нужно скачать и загрузить ASDF. Сохраните где-нибудь asdf.lisp, затем запустите (load "/path/to/asdf.lisp").
  2. Для каждой библиотеки / приложения (" системы "в языке ASDF) вам необходимо загрузить и распаковать в какое-то место. Повторяйте, пока не будут удовлетворены все зависимости. Запишите эти места (каталоги).
  3. Для каждого места с шага № 2 добавьте место в реестр ASDF: (нажмите "/ path / to / dir /" asdf: * central-registry *) . Не забудьте косую черту в конце.
  4. Загрузите систему, используя (asdf: oos '
8
ответ дан 6 December 2019 в 10:52
поделиться

The quickest way in Ubuntu is to use the packages included in that distribution. It is "ok" if you just want to try some things, but these versions are often comparatively old. I would recommend the packages sbcl and slime. If you don't know emacs yet, you can get into that quite fast through its built-in tutorial (C-h t (press Control-h, release, then press t)).

You can then start emacs, start slime (through M-x slime), open a lisp file (C-x C-f ~/lisp/first-try.lisp), and you're ready to go. As a tutorial for Lisp, I think that Practical Common Lisp is a very nice book, and it's freely available.

Now, when you have come to like Lisp, you might want more up to date packages. I would recommend to use clbuild for that (see the link for further information, including FAQ). You can then also build a new sbcl (bootstrapped by the distribution's version).

ASDF, by the way, is only a system definition facility. It doesn't know how to download packages, it only knows how to load systems into a running Lisp image. In other words, it just solves the problem of automatically loading the multiple files that some "system" (library) consists of in the right order. The newest versions allow loading a package (after it is installed, e.g. through clbuild) with a simple

(asdf:load-sys 'foo)

Older versions show ASDF's internal concept of operations:

(asdf:operate 'asdf:load-op 'foo)

The above load-sys is a shorthand for this common use case. Further information (one could say, all you need to know about it) is at the ASDF Getting Started guide. ASDF is also included in SBCL.

When you load a source file, it is automatically compiled (producing .fasl files (fast-load)) so that loading is much faster next time.

6
ответ дан 6 December 2019 в 10:52
поделиться

Вероятно, один из самых быстрых способов начать работу - это использовать Lisp in a Box (или дополнительный продукт вроде LispBox ). Это полные наборы всего, что вам нужно.

Вы также можете попробовать Lisp Resource Kit , который представляет собой загрузочный CDROM с инструментами Lisp и документацией, которые уже настроены для вас. Просто вставьте его в привод CDROM и загрузитесь!

2
ответ дан 6 December 2019 в 10:52
поделиться