Введение в программирование на Лиспе



Какое назначение имеет функция apply, входящая в состав интерпретатора:

  • функция вычисления условных форм или ветвлений
  • вычисление выражений вида (quote ..) и ‘….
  • (Правильный ответ) применение функции, подаваемой в качестве параметра в apply, к ее аргументам – то и другое представлено как данные Лиспа

Какая из перечисленных ниже форм может быть переменной:

  • ‘A
  • (A)
  • (Правильный ответ) Adcdefj

Укажите форму, содержащую ошибку:

  • (defun f3 (xl) (map-el (lambda (x)(+ 10 (* x x x))) xl))
  • (Правильный ответ) (defun f(x y) (map-el (lambda (x y) (+ (car x) (car y)) x y)))
  • (Правильный ответ) (map-comp ‘#(car ‘(1 2 3)) ‘(1 2 3) ‘(4 5 6))
  • (Правильный ответ) (defun f(x y) (map-el (lambda (x1 y1) (/ (car x1) (car y1)))))

Какие из представленных ниже форм является несписочным S-выражением

  • (Правильный ответ) (1 . (2 . 3))
  • (1 (2 3))
  • (1 2 3)
  • ()
  • (Правильный ответ) 1

Являются ли приведенные ниже описания функции взятия правого элемента (атома ) списка (списочной нотации) семантически и синтаксически верными. Указать верное описание:

  • (defun F(x) (cond (F (cdr x)) ((atom x) x) ))
  • (Правильный ответ) (defun F(x) (cond ((Null (cdr x)) (car x)) (T (F (cdr x)) )) )
  • (defun f(x) (f (cdr x)))

Основная структура данных языка Лисп:

  • (Правильный ответ) список
  • атом
  • таблица

Пары «переменная-значение» в элементарном Лиспе содержатся в:

  • базе данных переменных (группа временных файлов)
  • (Правильный ответ) ассоциативном списке
  • хэш-таблице

Какой подход в построении программ преимущественно используется в Лисп-системах программирования:

  • объектно-ориентированный
  • (Правильный ответ) функциональный
  • императивный

Под термином «форма» в языке Лисп понимается:

  • список из идентификатора функции, ее аргументов и ее всевозможных значений
  • (Правильный ответ) список из представления функции и перечня ее аргументов
  • программа на языке Лисп

Программой на языке Лисп называют:

  • последовательность вычисляемых атомов
  • (Правильный ответ) последовательность вычисляемых форм
  • (Правильный ответ) последовательность вычисляемых выражений

Какой подход в построении программ наиболее подходит для использования в Лисп-системах программирования:

  • (Правильный ответ) функциональный
  • интерфейсный
  • декларативный

Общий принцип функционального программирования:

  • представление функции строится заранее
  • (Правильный ответ) представление функции строится и вычисляется также как и представление данных
  • при символьном представлении данных представление функции нельзя построить теми же средствами, что и обработку значений

Формой в языке Лисп называют:

  • описание функции на языке Лисп
  • список из имени функции, перечня ее аргументов и значений
  • (Правильный ответ) список из представления функции и перечня ее аргументов

Элементарными функциями в Лисп системе называют:

  • любые неделимые элементы — атомы
  • встраиваемые S-выражения, имеющие определения на уровне исполнимого кода
  • (Правильный ответ) атомы, определенные как подпрограммы на уровне исполняемого кода

Сообщение интерпретатора Step 3> означает:

  • номер строки после вызова функции (Step выражение)
  • команда step была вызвана 3 раза
  • (Правильный ответ) разбор подвыражения, находящегося на глубине 3 в дереве разбора

Какие из приведенных ниже строк являются комментариями в системе Лисп:

  • (comment комментарий)
  • ‘комментарий
  • (bye комментарий)
  • (Правильный ответ) ; комментарий

Элементарные функции в Лисп системе это:

  • (Правильный ответ) атомы, определенные как подпрограммы на уровне исполняемого кода
  • встраиваемые S-выражения, имеющие определения на уровне исполнимого кода
  • обычные атомы

Какое событие произойдет после введения в строку интерпретатора выражения (Cons ‘a BC):

  • (Правильный ответ) появится сообщение об ошибке, что переменная «BC» не имеет значения
  • система выдаст правильный результат
  • появится сообщение об ошибке, что переменная «a» не имеет значения

Сообщение интерпретатора Step —> (выражение) означает:

  • данное выражение является значением и вычисляться не будет
  • следующее выражение является результатом, который будет использоваться при следующих вызовах команды step
  • (Правильный ответ) на следующем шаге будет вычислено именно это выражение

Укажите результат вычисления выражения (CONS Nil 20)

  • (Nil)
  • (20)
  • (Правильный ответ) (Nil . 20)

Вычислимо ли выражение (EQ (car ‘(())) (cdr'(T . Nil))), если да, то какой ответ является верным:

  • нет, не вычислимо
  • да, ответ False
  • (Правильный ответ) да, ответ T

Укажите правильный результат вычисления формы (Cons ‘Nil ‘(A)):

  • пара элементов (A . Nil)
  • (Правильный ответ) (Nil A)
  • (Nil . (Nil . A))
  • (Nil . A)

Какие из данных выражений представлены списками:

  • (1 . 2)
  • (Правильный ответ) (1 2)
  • 1

Результатом выполнения функции CONS над двумя атомами является:

  • атом
  • список вида (Атом1 Атом2)
  • (Правильный ответ) бинарный узел вида (Атом1 . Атом2)

Какой из результатов может быть получен при вычислении формы (eq ‘(Nil) (atom ‘(T))), и укажите причину, почему это так:

  • (Правильный ответ) Nil, т.к. форма (eq ‘(Nil) (atom ‘(T))) сведется к вычислению (eq ‘(Nil) Nil)
  • T, т.к. ‘(Nil) и ‘(T) являются атомами
  • Nil, т.к. форма сведется к вычислению (EQ Nil T)
  • сообщение об ошибке, т.к. ‘(nil) это список
  • T, т.к. предикат atom выдаст значении Nil

Какое из значений может быть получено при вычислении формы (cdr ‘( a (b (c)) d)):

  • (Правильный ответ) ((b (c)) d)
  • (d)
  • (b (c))

Результатом выполнения функции CDR над списком является:

  • (Правильный ответ) часть списка без первого элемента (списка или атома)
  • первый элемент списка, элемент может быть списком
  • последний элемент списка, элемент может быть списком
  • элемент с номером, которые подается в качестве второго аргумента в виде числа

Передача интерпретатору формы (f ‘x 3) означает то, что:

  • вызывается функция f, аргументом которой является результат вызова функции x с аргументом 3
  • это форма блокирована для вычисления
  • (Правильный ответ) вызывается функция f для двух аргументов ‘x и 3, данные » x » и «3» подаются в функцию в качестве значений аргументов

Что происходит при вычислении формы (defun f(x)(cons x x)):

  • имя функции f связывается с ее определением, но данная форма не вычислима, т.к. не указано значение переменной x
  • (Правильный ответ) имя функции f связывается с ее определением, и будет доступно далее при работе с интерпретатором
  • имя функции f связывается с ее определением и будет доступно только один раз после вычисления указанной формы

Какие из представленных ниже форм представляют одноэлементный список в Лиспе:

  • (Правильный ответ) (Atom)
  • (Правильный ответ) (Атом . Nil)
  • Atom

Что происходит при вычислении интерпретатором формы ((lambda (x) (cons x x)) ‘A):

  • в системе создается функциональный объект с именем Lambda
  • данная форма останется доступной в системе с возможностью многократного ее вызова с различными значениями переменной X
  • (Правильный ответ) переменная X связывается со значением A, выполняется однократное вычисление безымянной функции, строящей пару (A . A)

Какие события происходят в системе при вычислении интерпретатором формы ((lambda (x y) (cons x y)) ‘A ‘B):

  • данная форма останется доступной в системе с возможностью многократного ее вызова с различными значениями переменных X и Y
  • в системе создается функциональный объект с именем Lambda
  • (Правильный ответ) переменная X связывается со значением A, Y – с B, выполняется однократное вычисление безымянной функции, строящей пару (A . B)

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

  • (Правильный ответ) любая форма произвольной длины и сложности
  • числа и строки
  • только атомы

Какая из приведенных ниже функций является рекурсивной с правильным выходом из рекурсии:

  • (defun f (x) (f (car x)))
  • (Правильный ответ) (defun f (x) (cond ((Atom x) x)(T (f (car x)))))
  • (defun f (lambda (x) (cond (T ( * x (f (- x 1 ))) ) ) ))

В каких случаях правильно указано число обращений к функции Cons при вызове функции subst, имеющей определение

(DEFUN subst (x y z) (COND ((equal y z) x) ((ATOM z) z) ((QUOTE T)(CONS (subst x y (CAR z)) (subst x y (CDR z)) ) )))

, со следующими аргументами (порядок следования x y z):

  • (Правильный ответ) обращений – 3, аргументы x- A, y — A, z — (A B C)
  • (Правильный ответ) обращений – 0, аргументы x- A, y — B, z – C
  • обращений – 2, аргументы x- (1 2), y — A, z — (B A C D)
  • обращений – 4, аргументы x- (1 2), y — (3 4), z — (1 2 3 4)

В каком случае правильно указан результат выполнения функции member, имеющей определение

(DEFUN member (x y) (COND ((null y) (QUOTE Nil)) ((equal x (CAR y)) (QUOTE T)) ((QUOTE T) (member x (CDR y)) ) ))

при интерпретации выражений с указанными ниже аргументами:

  • x – ((A B)), y – (C A), результат T
  • y – (A (B) C) y – (C (B) C A), результат T
  • (Правильный ответ) x – (B C D), y – (A (B C D)), результат T
  • x- ((A) B C), y — (A B C D), результат T

В каком случае правильно указано количество обращений к последней ветви второго (вложенного) Cond функции Equal, имеющей определение

(DEFUN equal (x y) (COND ((ATOM x) (COND ((ATOM y) (EQ x y)) ((QUOTE T) (QUOTE NIL)) ) ) ((equal (CAR x)(CAR y)) (equal (CDR x)(CDR y))) ((QUOTE T) (QUOTE NIL)) ) )

при интерпретации выражений с указанными ниже аргументами:

  • (Правильный ответ) обращений –0, аргументы (a (b)) и (с d)
  • обращений -3, аргументы (a b) и (c b)
  • обращений – 1, аргументы (a b) и (a c)
  • (Правильный ответ) обращений – 0, аргументы (a b) и (c d)

В каком случае правильно указано количество обращений к последней ветви ((QUOTE T) (QUOTE NIL)) второго (вложенного) Cond функции Equal, имеющей определение

(DEFUN equal (x y) (COND ((ATOM x) (COND ((ATOM y) (EQ x y)) ((QUOTE T) (QUOTE NIL)) ) ) ((equal (CAR x)(CAR y)) (equal (CDR x)(CDR y))) ((QUOTE T) (QUOTE NIL)) ) )

при интерпретации выражений с указанными ниже аргументами:

  • обращений – 1, аргументы (a b) и (a c)
  • обращений -3, аргументы (a b) и (c b)
  • обращений – 1, аргументы (1 2) и (1 0)
  • (Правильный ответ) обращений –1, аргументы (a b) и (a (d))

Какие из представленных ниже форм является несписочным S-выражением

  • ()
  • (Правильный ответ) atom
  • a . Nil
  • (Правильный ответ) (a . (b . c))
  • (a b c)
  • (a . (b с))

В каких случаях правильно указан результат выполнения функции member, имеющей определение

(DEFUN member (x y) (COND ((null y) (QUOTE Nil)) ((equal x (CAR y)) (QUOTE T)) ((QUOTE T) (member x (CDR y)) ) ) )

при интерпретации выражений с указанными ниже аргументами:

  • x – (A (B)), y – (C (B) A), результат T
  • (Правильный ответ) x- (A B C), y — (A B C D), результат Nil
  • (Правильный ответ) x – (A B C), y – (A B (C D)), результат Nil
  • x – (A (B C)) y – (C A (B C) (A)), результат T

Предикатом в Лиспе называют:

  • функцию, не имеющую выходные значения
  • (Правильный ответ) функцию, имеющую выходные значения T и Nil
  • функцию, имеющую выходные значения TRUE и FALSE

Какой результат будет получен при интерпретации выражения (cddr (eval ‘(cdr ‘(a b c))))

  • (b с)
  • (Правильный ответ) Nil
  • Сообщение об ошибке
  • b

В каком случае интерпретатор выдаст сообщение об ошибке при вводе в его строку выражения > (a ):

  • когда a является именем функции, а не именем переменной
  • в любом случае, т.к. (a) есть недопустимая конструкция
  • (Правильный ответ) когда a не является именем функции без параметров

Что такое интерпретация:

  • (Правильный ответ) это функция, вычисляющая значения всевозможных форм, определенных согласно спецификации языка, с точностью до ресурса
  • это функция, вычисляющая значения некоторого фиксированного множества форм
  • это функция, вычисляющую значения любых всевозможных форм

В каком порядке будет вычислено выражение (cons (car x) (car y)):

  • (Правильный ответ) сначала будут получены значение переменной x и результат (car x), затем переменной y и результат (car y), а в конце будет выполнена операция cons с результатами (car x) и (car y)
  • сначала будут получены значения x и y, затем в порядке следования выполнены операции cons, cdr и car
  • сначала будут получены значение переменной x, затем переменной y, а в конце будет выполнена операция cons с результатами (car x) и (car y)

Универсальная функция eval в базовом Лиспе – это:

  • (Правильный ответ) функция, строящая значения вычислимых форм
  • функция, строящая значения только рекурсивных форм
  • вычисляющая только базисные функции

Что непременно делает интерпретатор до применения функции:

  • (Правильный ответ) связывает переменные из лямбда-списка параметров со значениями фактических аргументов
  • связывает имя функции с ее аргументами
  • вычисляет значение функции

Выражение (quote Atom) воспринимается интерпретатором как:

  • переменная
  • функция
  • (Правильный ответ) константа

Каким образом в базовом Лиспе изображается строковая константа:

  • «строка
  • (Правильный ответ) «строка»
  • ‘строка

Функционалом называют функцию:

  • (Правильный ответ) аргументами или результатом которой могут выступать другие функции
  • аргументами которой могут выступать значения, полученные вычислением других функций
  • аргументами которой могут выступать символьные выражения

Какие факторы должны быть учтены при определении отображающей функции:

  • (Правильный ответ) способ получения результата из отображаемого множества
  • каким языком воспользоваться для написания этой функции
  • как распределить память под новое множество и определение функции

Какое из приведенных ниже выражений является примером правильного использования функционала map-el:

(defun map-el (fn xl) (cond (xl (cons (funcall fn (car xl) ) (map-el fn (cdr xl)) ) ) ) )

  • (map-el ‘(1 2 3 4))
  • (map-el ‘(1 2 3 4) #’caddr)
  • (map-el ‘+ ‘(1 2 3 4))
  • (map-el caddr ‘(1 2 3 4))
  • (Правильный ответ) (map-el #’car ‘((1)(2)(3)(4)))

В чем заключается различие между аргументами (и значениями) функционалов и функций:

  • (Правильный ответ) в качестве аргументов и результатов у функционалов могут выступать функции
  • в качестве аргументов и результатов у функций могут выступать только определенные типы объектов, а у функционалов любые
  • в качестве аргументов и результатов у функций могут выступать функционалы.

Какой из результатов будет получен при вычисления формы (union ‘(a b c) ‘(1 a a)), функция union имеет следующее определение:

(DEFUN UNION (X Y) (COND ((NULL X) Y) ((MEMBER (CAR X) Y) (UNION (CDR X) Y) ) (T (CONS (CAR X) (UNION (CDR X) Y))) )) ) ))

  • (Правильный ответ) (b с 1 a a)
  • (с a a b 1)
  • (1 a b c)
  • (a с b 1)

Какой из результатов вычисления формы (union ‘(a b c) ‘(с a b)) будет получен (учесть порядок следования элементов итогового списка). Функция Union имеет следующее определение:

(DEFUN UNION (X Y) (COND ((NULL X) Y) ((MEMBER (CAR X) Y) (UNION (CDR X) Y) ) (T (CONS (CAR X) (UNION (CDR X) Y))) )) ) ))

  • (a с b)
  • (a b с)
  • (Правильный ответ) (с a b)
  • (a b a b)

Каким образом низкоуровневая программа может быть включена в Лисп-систему:

  • (Правильный ответ) создание низкоуровневой программы в Лисп-системе пользователем
  • (Правильный ответ) путем трансляции Лисп-кода в код ассемблера Лисп-программы с дальнейшим использованием
  • лисп система не поддерживает работу с языком Ассемблер

Каким образом низкоуровневая программа может быть включена в Лисп-систему:

  • никаким
  • (Правильный ответ) создание низкоуровневой программы в Лисп-системе пользователем
  • создание низкоуровневой программы возможно вне систем программирования, но никак не внутри системы

Что означает запись (let ((a (cons x y))) a) :

  • замена в последующих выражениях списков «x» и «y» на список «a»
  • присваивание локальной переменной «a» результата консолидации (cons x y)
  • (Правильный ответ) замена в выражениях (аргументах Let) повторяющегося подвыражения «(cons x y)» на «a» без воздействия на результат вычисления последующих форм

Какой результат будет получен при вычислении формы (cons ‘(car ‘(A B)) ‘(car ‘(C D))) :

  • сообщение об ошибке
  • (A . C)
  • (Правильный ответ) ((car ‘(A B)) . (car ‘(B C)))

Какая из представленных ниже пар форм имеет одинаковые результаты при их вычислении:

  • (Правильный ответ) (apply (f x y)) и (funcall f x y)
  • (eval ‘(f x y)) и (funcall f ‘x ‘y)
  • (apply (f x y)) и (funcall (f x y))
  • (eval ‘(f ‘x ‘y)) и (eval ‘(f x y))

Укажите, какие функции являются псевдо-функциями Лисп-системы:

  • (cond)
  • (Правильный ответ) (setq)
  • (union)

Какая из представленных ниже пар форм имеет одинаковые результаты при их вычислении:

  • (append f (x y)) и (funcall f (x y))
  • (Правильный ответ) (eval ‘(f x y)) и (funcall f x y) при учете, того, что (defun f(x y) (cons x y)) был вызван ранее
  • (apply f (x y)) и (funcall f x y)
  • (eval f (x y)) и (funcall f x y)

В чем заключается действие описанной в лекции операции «приостановка вычислений»:

  • вычисления аргумента этой функции не откладывается, аргумент вычисляется моментально.
  • (Правильный ответ) вычисления аргумента этой функции откладывается, аргумент запоминается вместе с контекстом вызова для последующего возобновления вычислений
  • вычисления аргумента этой функции не откладывается, аргумент запоминается вместе с контекстом вызова для текущего вычисления

Каким образом реализуются замедленные вычисления:

  • (Правильный ответ) запоминанием символьного выражения с контекстом его вычисления
  • формированием рецептов и запоминанием текущего состояния памяти
  • блокировкой вычислений и запоминанием текущего состояния стэка

Сохранение и последующий вызов функции называется:

  • вызовом по значению
  • вызовом по имени
  • вызовом по ссылке
  • (Правильный ответ) вызовом по необходимости

Что содержится в рецепте вычисления:

  • адрес вычисляемой формы
  • (Правильный ответ) отложенная форма и контекст, в котором она вызывается
  • только вычисляемая форма

Какая из формальных реализаций операции «приостановка вычислений» является верной:

  • (Правильный ответ) (lambda () x)
  • (quote x)
  • (defun f(x) x)
  • ‘x

В чем заключается действие описанной в лекциях функции «возобновление вычислений»:

  • аргумент этой функции может не вычисляться
  • (Правильный ответ) аргумент этой функции вычисляется в соответствии с контекстом вызова
  • аргумент этой функции – выражение, которое будет вычислено после вычисления остальной части выражения, в состав которого оно входит

Каким образом можно исключить повторное вычисление одного и того же рецепта:

  • введением флага, вычисленный рецепт будет иметь вид (e AL )
  • введением флага, вычисленный рецепт будет иметь вид (Nil (eval e AL ))
  • введением флага, вычисленный рецепт будет иметь вид (T e AL )
  • (Правильный ответ) правильного из перечисленных выше ответов нет

Какой из результатов вычисления формы (rplaca (cdr x) (car x)), где x – список (a b c d), является правильным:

  • (b c d a)
  • (Правильный ответ) (a с d)
  • (a a)
  • (b c d)

Какой из результатов вычисления формы (grp ‘(1 2 3 4)) является верным. Функция (grp x) имеет определение

(defun grp (x)(list (car x) (list (cadr x) (caddr x))))

  • (1 2 3)
  • (1 (2 (3)))
  • (1 2 3 4)
  • (Правильный ответ) (1 (2 3))

С помощью какой функции Clisp можно посмотреть определение функции в списке свойств атома:

  • (Правильный ответ) (symbol-function )
  • (function-symbol)
  • (symbol-value )

С помощью каких функций Clisp можно посмотреть значение глобальной переменной:

  • (symbol-function )
  • (symbol-plist)
  • (Правильный ответ) (symbol-value )

Для чего необходима сборка «мусор»:

  • для очищения памяти после завершения работы системы
  • для очищения памяти перед запуском Лисп-системы
  • (Правильный ответ) для повторного распределения памяти

Какая из форм может служить аналогом подпрограммы на Pascal

procedure pr(x: integer);begin a:=0; for i:=1 to x do a:=a+1; print (a);end;

  • (prog pr () (setq a 0) B (cond ((= a x) (print a)(return a) ) ) (setq a (+ a 1)) (go B) )
  • (Правильный ответ)
    (defun pr(x)(prog (a) (setq a 0)B (cond ((= a x) (print a)(return a) ) ) (setq a (+ a 1)) (go B) ))
  • (defun pr(x)(prog (a) B (cond ((= a x) (print a)(return a) ) ) (setq a (+ a 1)) (go B) ))

Какая из приведенных ниже форм позволяет находить максимальный элемент ‘i’ списка ̵