игра брюс 2048
Главная / Программирование / Функциональное программирование / Тест 27

Функциональное программирование - тест 27

Упражнение 1:
Номер 1
 Eval/Apply-интерпретатор состоит из
 

Ответ:

 (1) Конечного автомата с двумя состояниями Eval и Apply 

 (2) двух основных взаимно-рекурсивных функций Eval и Apply 

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


Номер 2
 Какой тип имеет функция eval в Eval/Apply-интерпретаторе?
 

Ответ:

 (1) eval : expr→​env→​expr 

 (2) eval : expr→​expr 

 (3) eval : expr→​env→​value 

 (4) eval : env→​expr 


Номер 3
 Какой тип имеет функция apply в Eval/Apply-интерпретаторе?
 

Ответ:

 (1) apply: env→​expr→​expr→​expr 

 (2) apply: expr→​expr 

 (3) apply: env→​expr→​ env→​expr→​expr 

 (4) apply: expr→​expr→​expr 


Номер 4
Для реализации ленивого Eval/Apply-интерпретатора необходимо, в частности:
 

Ответ:

 (1) добавить дополнительную функцию susp: expr→​env→​expr для отложенного вычисления 

 (2) ввести в дерево выражения конструкцию susp(expr,env), похожую на конструкцию замыкания 

 (3) изменить функцию Apply, чтобы она вместо результата возвращала функцию для отложенного вычисления результата 


Упражнение 2:
Номер 1
 Какие стеки включает в себя SECD-машина?
 

Ответ:

 (1) стек объектов вычислений, среда, управляющая строка, стек возвратов 

 (2) стек операций, стек операндов, управляющая строка, стек возвратов 

 (3) стек объектов вычислений, управляющая строка 

 (4) стек объектов операндов, стек возвратов, среда 


Номер 2
 Что помещается в стек возвратов D SECD-машины?
 

Ответ:

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

 (2) окружение, в котором вычислялась вызываемая функция 

 (3) состояние стека вычислений до вызова функции 

 (4) состояние стеков S, E и C до вызова функции 


Номер 3
 Что помещается в стек объектов S SECD-машины?
 

Ответ:

 (1) выражения-операнды (в том числе замыкания) для выполнения операции аппликации 

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

 (3) частично-вычисленные функции  

 (4) результаты уже вычисленных выражений для эффективной реализации отложенных вычислений 


Упражнение 3:
Номер 1
 Программа, порожденная генератором fsyacc:
 

Ответ:

 (1) строит по входному тексту программы синтаксическое дерево 

 (2) строит по последовательности лексем синтаксическое дерево программы 

 (3) строит по входному тексту программы последовательность лексем 

 (4) строит по входному тексту программы код абстрактной машины 


Номер 2
 При реализации синтаксического анализатора методом рекурсивного спуска, какой тип удобно использовать для функции parse:
 

Ответ:

 (1) token list →​ expr 

 (2) token list →​ expr →​ token list 

 (3) token list →​ (expr * token list) 

 (4) (expr*token list) →​ (expr*token list) 


Номер 3
 Почему контестно-свободная грамматика удобна для разбора методом рекурсивного спуска?
 

Ответ:

 (1) на каждом шаге по начальным токенам можно однозначно понять, какое правило грамматики применять, что позволяет избежать возвратов и перебора 

 (2) нет необходимости передавать текущий контекст при рекурсивном вызове 

 (3) нет необходимости возвращать еще не обработанный хвост последовательности токенов 




Главная / Программирование / Функциональное программирование / Тест 27