Главная / Программирование /
Функциональное программирование / Тест 7
Функциональное программирование - тест 7
Упражнение 1:
Номер 1
Какие основные операции в чистом λ-исчислении?
Ответ:
 (1) абстракция и аппликация 
 (2) аппликация и инкапсуляция 
 (3) абстракция и инкапсуляция 
 (4) абстракция, аппликация и сложение 
Номер 2
Какие недостатки "классической" нотации для определения функции f(x)=2*x+1?
Ответ:
 (1) она может быть истолкована неоднозначно 
 (2) она неудобна для программирования 
 (3) в ней сложно различать свободные и связанные переменные 
Номер 3
Как определяется функция в λ-исчислении?
Ответ:
 (1) как множество пар <аргумент, значение> 
 (2) как строка, представляющая собой совокупность абстракций и аппликаций 
 (3) как алгоритм вычисления функции по заданному входному значению 
Упражнение 2:
Номер 1
Что такое каррирование?
Ответ:
 (1) представление функции от нескольких аргументов как функции от одного аргумента, возвращающей результат-функцию 
 (2) представление функции от нескольких аргументов как функции от одного аргумента – упорядоченной n-ки 
 (3) представление функции от нескольких аргументов как функции от одного аргумента спискового типа 
 (4) запрет на использование функций от нескольких аргументов 
Номер 2
Какой тип у каррированной функции сложения целых чисел?
Ответ:
 (1) int -> (int -> int) 
 (2) (Int -> int) -> int 
 (3) (int Ч int) -> int 
 (4) Int -> int 
Номер 3
Пусть mul3 – каррированная функция умножения трех целых чисел, mul3 = xyz.x*y*z. Какой будет тип у выражения (mul3 5)?
Ответ:
 (1) int 
 (2) int -> int 
 (3) int -> int -> int 
 (4) (int x int) -> int 
Упражнение 3:
Номер 1
В чем разница между конструкциями fun и function в F#?
Ответ:
 (1) fun – это более короткий способ записи function 
 (2) function может описывать функции от одного аргумента, fun – каррированные функции от нескольких аргументов 
 (3) fun служит для задания функциональной константы, function – для описания функции 
 (4) function служит для задания функциональной константы, fun – для описания функции 
Номер 2
В чем разница между конструкциями fun и function в F#?
Ответ:
 (1) fun – это более короткий способ записи function 
 (2) в function может использоваться сопоставление с образцом, в fun – нет 
 (3) fun служит для задания функциональной константы, function – для описания функции 
 (4) function служит для задания функциональной константы, fun – для описания функции 
Номер 3
Где может использоваться сопоставление с образцом в F#?
Ответ:
 (1) в конструкциях function, match, let 
 (2) для этого предназначена специальная конструкция match 
 (3) в конструкции связывания let 
 (4) в конструкциях let и match  
Упражнение 4:
Номер 1
Как описываются рекурсивные функции в F#?
Ответ:
 (1) специальным оператором rec 
 (2) добавлением rec в операцию связывания let 
 (3) в F# нельзя описывать рекурсивные функции 
Номер 2
Как описать повторяющиеся действия в функциональном языке?
Ответ:
 (1) с помощью циклов 
 (2) с помощью оператора перехода 
 (3) с помощью рекурсии 
 (4) любым их перечисленных способов 
Номер 3
Какая рекурсия называется линейной?
Ответ:
 (1) при вызове функции осуществляется не более одного рекурсивного вызова 
 (2) в теле функции присутствует только один рекурсивный вызов 
 (3) рекурсивный вызов – это последнее действие в теле функции 
 (4) это разновидность рекурсии с одним параметром – номером шага