Quicklisp

Инструкция о том, как установить этот чудесный инструмент уже давалась в этом блоге, прошу обратиться к заметке по настройке окружения. Здесь же условимся в том, что quicklisp у Вас же установлен. Теперь стоит немного пролить свет на то, как он работает и какие команды понимает. Поехали!

Загрузка пакета

Основная команда, которой вы будете пользоваться большую часть времени это:

(ql:quickload system-name)

Здесь вместо system-name нужно вставить название необходимого пакета или библиотеки. Quicklisp сам найдёт и загрузит все зависимости. После того как команда отработает пакет уже будет загружен и готов к использованию. Вот небольшой пример загрузки библиотеки для работы с векторами:

(ql:quickload "vecto")

(defpackage #:vecto-examples
    (:use #:cl #:vecto))

(in-package #:vecto-examples)

(defun feedlike-icon (file)
  (with-canvas (:width 100 :height 100)
    (set-rgb-fill 1.0 0.65 0.3)
    (rounded-rectangle 0 0 100 100 10 10)
    (fill-path)
    (set-rgb-fill 1.0 1.0 1.0)
    (centered-circle-path 20 20 10)
    (fill-path)
    (flet ((quarter-circle (x y radius)
             (move-to (+ x radius) y)
             (arc x y radius 0 (/ pi 2))))
      (set-rgb-stroke 1.0 1.0 1.0)
      (set-line-width 15)
      (quarter-circle 20 20 30)
      (stroke)
      (quarter-circle 20 20 60)
      (stroke))
    (rounded-rectangle 5 5 90 90 7 7)
    (set-gradient-fill 50 90
                       1.0 1.0 1.0 0.7
                       50 20
                       1.0 1.0 1.0 0.0)
    (set-line-width 2)
    (set-rgba-stroke 1.0 1.0 1.0 0.1)
    (fill-and-stroke)
    (save-png file)))

(feedlike-icon "~/1f.png")

Пример кода для рисования я взял с официального сайта библиотеки. На выходе я получил файл-картинку в домашнем каталоге. Что на ней не сложно догадаться, но загружать я не буду, чтобы вы проверили сами.

Поиск и обновление пакетов

Иногда полное имя пакета не известно, для того, чтобы провести поиск по подстроке существует команда:

(ql:system-apropos substring)

Для обновления всех пакетов есть команда:

(ql:update-all-dists)

Для обновления самого quicklisp:

(ql:update-client)

Итог

Вот так подтверждается утверждение о том, что всё гениальное просто. Однако, это не исчерпывающий список команд. Кому интересно — могут обратиться на сайт самого quicklisp и к его документации. К тому же по мере развития блога и написания новых статей я и сам буду расширять список известных команд. В планах сделать небольшой справочник по командам lisp, для того, чтобы было, во-первых, удобней ориентироваться, во-вторых был список всех команд, которые есть. Например список всех команд для обработки строк. На данный момент я уделяю не так много времени проекту, поэтому пока это только мечты.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.