Введение в Common Lisp: Основы языка и работа со списками

Вот и готова новая статья по основам языка Lisp, старался сделать всё довольно  кратко. Перед прочтением этой статьи советую прочитать Введение в Common Lisp: Установка и первый запуск . Я изложил более компактное содержание нескольких глав книги "МИР ЛИСПА. Т.1"

Символы могут состоять из букв, цифр, других знаков. Также символы могут быть как и строчные, так и прописные. Lisp, прописные и строчные буквы отождествляются и представляются прописными буквами:

devhead.ru <=>  DEVHEAD.RU

На ряду с символами используются числа:

123 ; Целое число

12.3 ; Десятичное число

1.23Е4 ; число, представленное мантиссой и порядком

Логические значения

Логические значения True и False, нам известны из многих языков программирования, но в место привычных значений в Лиспе используют T и NIL.

T <== True (истина)

NIL <== False (ложь)

Построение списков из атомов и подсписков

Символы и числа представляют собой те простейшие объекты Лиспа, из которых строятся остальные структуры. Поэтому их называют атомами (atom). Списки являются основными типами данных в языке Лисп, списки могут содержать атомы, а могут и содержать и другие списки, списки заключаются в круглые скобки:

(a b (c d)e) ; Список состоит из 3 символов и одного подсписка, который состоит из 2 символов.

() ; Пустой список

(NIL) ; пустой список

Атомы и списки называются символьными выражениями или s-выражениями.

Лисп в качестве калькулятора :)

Когда пользователь заканчивает ввод какого нибудь выражения, то интерпретатор вычисляет evaluate (eval)  и выдает значение этого выражения.

Например:

>>(+ 2 2)

4

>>(- 3 2)

1

>>(* 3 3)

9

>>(/ 6 2)

3

>>(/ 6.0 2.5) ; Вычисления с десятичными числами

2.3999999999999999

>>(+ (* 3 2)(+ 2 2))

10

QUOTE блокирует вычисление выражения

Например:

>>(quote (+ 2 3))

(+ 2 3)

>>'(+ 2 3)

(+ 2 3)

Апостроф перед выражением является сделан для упрощения  и эквивалентен QUOTE.

Работа со списками

Первый элемент списка называют головой, а остаток от списка хвостом.

'(голова хвост хвост хвост)

CAR функция возвращает головную часть списка:

>>(CAR '(голова хвост хвост хвост))

ГОЛОВА

CDR функция возвращает хвост списка:

>>(CDR '(голова хвост хвост хвост))

(ХВОСТ ХВОСТ ХВОСТ)

LAST - последний элемент из списка

>>(LAST '(test hello))

HELLO

NTH более простая и наглядная функция извлечения из списка.

>>(NTH 1'(голова хвост хвост хвост)) ; извлекаем второй элемент

ХВОСТ

>>(NTH 0'(голова хвост хвост хвост)) ; извлекаем первый элемент

ГОЛОВА

Функция CAR,CDR и NTH имеет смысл только для аргументов, являющихся списками.

CONS функция включает новый элемент вначало списка.

>>(CONS 'голова '(хвост хвост))

(ГОЛОВА ХВОСТ ХВОСТ)

АТОМ проверяет, является ли аргумент атомом.

>>(ATOM 'атом) ; Это атом

T >>

(ATOM '(голова хвост)) ; Это не атом

NIL

NULL проверка на пустой список

>>(NILL '())

T

>>(NILL '(test test))

NIL

LIST создает список из элементов

>>(LIST  1 2 3)

(1 2 3)

>>(LIST 'test  '(hello))

(TEST (HELLO))

EQ сравнивает два синвола и если они равны, возвращает T, а иначе NIL.

>>(EQ 't 't)

T

>>(EQ 'test (car '(test test1)))

T

EQL сравнивает числа одинаковых типов:

>>(EQL 1 1)

T

>>(EQL 1.0 1.0)

T

>>(EQL 1  1.0) ; числа разных типов NIL

Чтобы сравнить числа с разными типами, то нужно воспользоваться :

>>(= 1  1.0)

T

EQUAL может сравнивать записи:

>>(equal  'test 'test)

T

>>(equal  '(test test1) '(test test1))

T

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

>>(equalp  '(test test1) '(test test1))

T

>>(equalp 2 2.0)

T

Ссылки

Введение в Common Lisp: Установка и первый запуск

http://lisp.ru/

Теги: , , ,

Дата: 14 декабря 2010

Автор: ignusius

Комментарии: 257

Комментарии: 257

  1. what happens if you break a film covered viagra in half [url=https://popularedstore.com/]viagra canada no prescription[/url] how much bigger does viagra make your cock how often can you orgasm with viagra he is taking viagra and making love for hours

  2. generic zithromax over the counter https://zithrobiot.com/ Oqqryh smebmu

  3. men taking viagra standard dose of viagra how long do friction burns viagra take what is better viagra or priligy what is the price for viagra

  4. is viagra government funded 2019 viagra before and after results where to buy viagra pearland how to ask doctor for viagra

  5. viagra coupons and discounts viagra with dapoxetine viagra alternatives over counter

  6. lyrics to viagra by 2 chainz https://purevigra.com/ effects of females taking viagra

  7. viagra for womens where to buy in india cialis with viagra what is the cost of viagra without insurance viagra tablets viagra mix pornhub

  8. how much viagra to use male enhancement viagra does viagra damage the liver

  9. role du viagra viagra prohibicion П†П…ПѓО№ОєОї viagra

  10. prostate cancer treatment and viagra https://purevigra.com a que edad se usa el viagra

  11. [url=http://zithrozpack.com]side effects of azithromycin[/url]

  12. can you order cialis online https://cialis.mlsmalta.com/

  13. can you order cialis online https://cialis.studiowestinc.com/

  14. levitra 20 mg tablets price [url=https://levitrair.com/]vardenafil[/url]
    levitra http://levitrair.com

  15. Today, while I was at work, my sister stole my iphone and tested to
    see if it can survive a forty foot drop, just so she can be a youtube sensation. My
    apple ipad is now broken and she has 83 views. I know this is entirely off topic but I had to share it with someone! http://antiibioticsland.com/Zithromax.htm

Оставить комментарий

*

Комментарий:

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

Разрешенные HTML теги:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>