Уроки LISP/1

Материал из LingvoWiki
Версия от 21:13, 18 февраля 2012; Demetrius (обсуждение | вклад) (Далі буде, але зараз я йду спати)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигацииПерейти к поиску

Загальна інформація

Словом LISP у наш час позначають групу споріднених мов програмування, найпоширенішими Шаблон:Tooltio є Common Lisp, Scheme та Clojure. Існують і інші лісп-подібні мови. І хоча під словом «Лісп» у вузькому розумінні частіше мається на увазі CL, тут ми будемо розглядати переважно Scheme та Clojure.

Для початку, бажано встановити якийсь лісп-транслятор.

Scheme існує в безлічі реалізацій та діалектів, між якими можуть бути деякі відмінності. Я орієнтуюсь переважно на JVM, тому використовую KAWA і SISC, хоча більшість реалізацій Scheme обходяться без джави. З відомих реалізацій можна згадати, наприклад, GNU Guile (не знаю, правда, наскільки воно кросплатфорне в умовах Win32).

Clojure реалізовано для JVM, також є реалізації для деяких інших віртуальних платформ (CLR (.NET/Mono), JS), якими я не користувався, тому нічого певного сказати не можу. Більшість інформації про Clojure, доступна в мережі, стосується JVM-реалізації.

Встановлення Clojure (для Windows)

На комп'ютері має бути встановлена Java (якщо її немавстановіть).

Clojure можна скачати звідси: http://clojure.org/downloads

Скачуємо архів, розпаковуємо (наприклад, у C:\Program Files\clojure-1.3.0\).

В цьому каталозі створюємо файл clojure.bat, відкриваємо його в блокноті, пишемо наступне:

   @echo off
   setlocal
   set CLOJURE_HOME=%~dp0
   if defined classpath (
   set classpath=%CLOJURE_HOME%\clojure-1.3.0.jar;%classpath%
   ) else set classpath=%CLOJURE_HOME%\clojure-1.3.0.jar
   java clojure.main %*

Далі для запуску інтерпритатора будемо використовувати clojure.bat — для зручності, можна створити ярлик до нього, також є сенс прописати шлях до нього в змінній середовища path, щоб спростити запуск з командного рядка.

Робота з лісп-подібними мовами передбачає, як правило, можливість використання інтерактивного середовища, також Шаблон:Відомого як REPL (Read-Eval-Print Loop — цикл читання-обчислення-друку). Іншими словами, запустивши інтерпритатор, ми можемо безпосередньо в ньому ввести якийсь вираз і отримати результат. Приклад:

  Clojure 1.3.0
  user=> (+ 1 2 3)
  6
  user=> (list 1 2 3)
  (1 2 3)
  user=> (cons 1 (list 2 3))
  (1 2 3)
  user=> (cons 1 (cons 2 (cons 3 ())))
  (1 2 3)
  user=>