Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lisp-ответы.docx
Скачиваний:
2
Добавлен:
12.09.2019
Размер:
58.14 Кб
Скачать
  1. Где используются продолжения? Что делать с продолжением, если функция не возвращает значения (например, вывод данных)?

Продолжение представляет состояние программы в определённый момент, которое может быть сохранено и использовано для перехода в это состояние. Продолжения содержат всю информацию, чтобы продолжить выполнения программы с определённой точки. Состояние глобальных переменных обычно не сохраняется, однако для функциональных языков это несущественно. Продолжения похожи на goto Бейсика, так как также позволяют перейти в любое место программы. Но продолжения, в отличие от goto, позволяют перейти только в участок программы с определённым состоянием, которое должно быть сохранено заранее, в то время, как goto позволяет перейти в участок программы с неинициализированными переменными.

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

  1. В каком случае используется несколько рекурсивных ветвей?

Несколько рекурсивных ветвей может понадобиться, если функция обрабатывает все элементы в структуре, но использует некоторые элементы отлично от других. В этом случае составляются два рекурсионных отношения.

  1. Что такое параллельная рекурсия?

Рекурсию называют параллельной, если она встречается одновременно в

нескольких аргументах функции:

(DEFUN f ...

...(g ... (f ...) (f ...) ...)

...)

Рассмотрим использование параллельной рекурсии на примере

преобразования списочной структуры в одноуровневый список:

(DEFUN PREOBR (L)

(COND

((NULL L) NIL)

((ATOM L) (CONS (CAR L) NIL))

(T (APPEND

(PREOBR (CAR L))

(PREOBR (CDR L))))))

  1. Что такое функционал?

Функции, которые позволяют вызывать другие функции, т. е. применять

функциональный аргумент к его параметрам называют применяющими

функционалами. Они дают возможность интерпретировать и преобразовывать

данные в программу и применять ее в вычислениях.

 

Функционал – функция, имеющая функциональный аргумент. Функциональным аргумент - аргумент, значением которого является функция

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

  1. Что в Лиспе понимается под формой?

S-выражения, которые могут быть вычислены интерпретатором, называют формами.

Под формой понимается такое символьное выражение, значение которого может быть найдено интерпретатором. Ранее уже использовали наиболее простые формы языка: константы, переменные, лямбда-вызовы, вызовы функций и их сочетания. Кроме них были рассмотрены некоторые специальные формы, такие как ' и setq, трактующие свои аргументы иначе, чем обычные функции. Лямбда-выражение без фактических параметров не является формой.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]