Урок 1. Введение в LISP

LISP   8 декабря 2012  Автор статьи:  

В данном уроке мы познакомимся с языком программирования LISP. Данный язык не является таким популярным как Pascal, C, C++, C# и Java, но имеет свои плюсы. Он позиционируется как функциональный язык и применяется для написания искусственного интеллекта. Кроме того LISP входит как подязык в некоторые системы, например в EMACS и Autocad. На этом расхваливание или рассказывание про LISP мы закончим и перейдем к написанию маленьких программок на нем. Для этого нам нужна среда разработки. Как самую простую в установке мы выберем среду LispWorks Personal Edition, она доступна для большинства платформ, в том числе и для Windows. Качайте ее с официального сайта. Мы будем использовать Common Lisp для написания программ, это такая версия языка, которая объединяет в себе несколько парадигм: функциональную, объектно — ориентированную и процедурную парадигму. Он был создан для объединения различных диалектов LISP. После того, как вы скачаете LispWorks. У вас откроется окно, которое будет содержать две вкладки Listener и Output. В окошке listener мы будем писать исходный код. Давайте напишем тривиальное a+b:

(+ 2 3)

После того, как вы нажмете Enter вам выведется ответ 5. Так как lisp является функциональным языком, то все операции в нем представлены в виде функций, который имеют следующую сигнатуру:

(имя_функции аргумент_1 аргумент_2 ...)

Аргументами функции могут выступать другие функции:

(* (+ 2 2) (- 11 1))

Выведет 40.
Теперь научимся создавать свои собственные функции:

(defun имя_функции(аргумент_1 аргумент_2 ...)

(функция_1
(
функция_2
...
)
)
)

Функция увеличения числа на 1:

(defun inc(chislo)
(+ chislo 1)
)

Для того, чтобы создавать комментарии в lisp используют точки с запятой. Если ваш комментарий относится ко всей программе, то следует ставить три точки с запятой, если он относится только к функции, то две, иначе одну.
Например:

;;Функция увеличения числа на 1:
(defun inc(chislo)
(+ chislo 1);увеличиваем число на 1
)

Теперь рассмотрим предикаты в языке Common Lisp, как и в алгебре логики, это некоторая функция, которая возвращает правду или ложь, в языке LISP это соответственно T и NIL. Любой объект отличный от NIL интерпретируется как T. Обычно предикаты заканчиваются на букву p:

(defun isdigitp(chislo)
(if(< chislo 10) chislo NIL) )

Таким образом наш предикат возвращает само число, если она цифра, и NIL в обратном случае.

Научиться программировать

  • на Delphi

  • на Java

  • на C++