Главная / Программирование /
Функциональное программирование / Тест 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 -> in
t 
 (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) это разновидность рекурсии с одним параметром – номером шага