Я новичок в LISP и не могу понять, что делает следующая LISP?Выход программы LISP
(setq A '(RIGHT ARE YOU))
(print (reverse (list (first (rest A))(first (rest (rest A))) (first A) 'HOW)))
setq
присваивает лексические переменные
Я новичок в LISP и не могу понять, что делает следующая LISP?Выход программы LISP
(setq A '(RIGHT ARE YOU))
(print (reverse (list (first (rest A))(first (rest (rest A))) (first A) 'HOW)))
setq
присваивает лексические переменные
Он печатает:
(HOW RIGHT YOU ARE)
Первая строка присваивает список из 3-х элементов на символ A
. Это указано для предотвращения оценки (RIGHT ARE YOU)
как функции, называемой RIGHT
. Вторая строка делает какую-то ненужную многословную и сложную логику для создания списка, состоящего из четырех элементов: строки HOW
и трех элементов от A
.
Ломая второй линии:
(first (rest A))
- это возвращает элемент YOU
из A
(first (rest (rest A)))
- это возвращает элемент ARE
из A
(first A)
- это возвращает элемент 'RIGHT' от A
Th теперь уходит с:
(print (reverse (list ARE YOU RIGHT 'HOW)))
Какой LISP вы изучаете? Многие LISP имеют понятие REPL (цикл чтения-eval-print), который позволяет экспериментировать с сложными выражениями и разбивать их на более мелкие куски, чтобы понять результаты промежуточных шагов.
Возможно, это расшифровка REPL сессии в Common Lisp просветит:
CL-USER> (setq a '(right are you))
(RIGHT ARE YOU)
CL-USER> (print (reverse (list (first (rest a)) (first (rest (rest a))) (first a) 'how)))
(HOW RIGHT YOU ARE)
(HOW RIGHT YOU ARE)
CL-USER> a
(RIGHT ARE YOU)
CL-USER> (rest a)
(ARE YOU)
CL-USER> (cdr a)
(ARE YOU)
CL-USER> (first (rest a))
ARE
CL-USER> (cadr a)
ARE
CL-USER> (rest (rest a))
(YOU)
CL-USER> (cddr a)
(YOU)
CL-USER> (first (rest (rest a)))
YOU
CL-USER> (caddr a)
YOU
CL-USER> (first a)
RIGHT
CL-USER> (car a)
RIGHT
CL-USER> (values (first (rest a)) (first (rest (rest a))) (first a) 'how)
ARE
YOU
RIGHT
HOW
CL-USER> (list (first (rest a)) (first (rest (rest a))) (first a) 'how)
(ARE YOU RIGHT HOW)
CL-USER> (list 'are 'you 'right 'how)
(ARE YOU RIGHT HOW)
CL-USER> (reverse '(are you right how))
(HOW RIGHT YOU ARE)
CL-USER> '(how right you are)
(HOW RIGHT YOU ARE)
CL-USER> (print '(how right you are))
(HOW RIGHT YOU ARE)
(HOW RIGHT YOU ARE)
CL-USER>
как же положение Вас и изменения? – Beast
Я только начинаю с книги. совершенно новичок. – Beast
, который лизет диалект? – leeor