Комбинатор вычеркиватель K можно задать правилом редукции
K a b → a
Функция h(f,g)=λ(x)f(g(x)) имеет тип
(Y→Z)x(X→Y)→ (X→Z)
Функция называется частичной или частично определенной
если есть элементы из области определения, для которых отображение посредством этой функции не определено
Что будет результатом работы функции cdr(X), если X='((A B) C (D E))?
(C (D E))
Соответствие между переменными и их значениями, которые являются S-выражениями называется
контекст
Регистрами SECD являются
Кроме Указатель на функциональное замыкание выполняемой функции Текст программы
Начало формы
Выражение "если f(x)>0 то 1 иначе 0" на языке Scheme будет выглядеть так
(IF (> (F X) 0) 1 0)
Вызов функции с меньшим числом аргументов, чем указано в определении функции, результатом которого является новая функция, называется
частичным применением
Укажите правильное определение для функции, определяющую, что атом x есть в списке s.
элемент(x,s) =если null(s) то #F иначе eq(x,car(s)) или элемент(x,cdr(s))
Правило
используется для вычисления базовых функций с достаточным количеством аргументов
Для представления любого λ-выражения в комбинаторной логике достаточно следующих комбинаторов (укажите базис с минимальным количеством комбинаторов)
распределитель S вычеркиватель K
В функциональном программировании для управления процессом выполнения программы можно использовать конструкции
вызов подпрограммы ветвления
Функция cadr(x) возвращает
второй элемент списка x
Какие из следующих строк являются S-выражением?
(X Y) (() (A B C)) ()
Замыкание состоит из
λ-выражения контекста, определяющего значения свободных переменных
Выражение "если g(x,y,z)>0 то 1 иначе 0" на языке Scheme будет выглядеть так
(IF (> (G X Y Z) 0) 1 0)
Выражение "если x>0 то 1 иначе 0" на языке Scheme будет
(IF (> X 0) 1 0)
Выполнение действий с циклическими структурами возможно в функциональном программировании только с помощью
запоминания
Укажите правильное определение для функции, определяющую длину списка s.
длина(s) ={ f(s, 0) гдерек f=λ(x,y) если null(x) то y иначе f(cdr(x),y +1) }
Теоретической основой функционального программирования является
λ-исчисление Чёрча теория рекурсивных функций
Тождественный комбинатор I можно задать правилом редукции
I a → a
Какая функция позволяет сравнить два атома
eq
Блоки локальных определений используются, чтобы
уменьшить определение функции путем избавления от повторяюшихся подвыражений
не определять некоторые функции глобально
Какую формулу в языке Scheme следует использовать для проверки, что S-выражение X является атомом?
(NOT (PAIR? X))
Укажите правильное определение для функции, определяющую количество элементов списка s, равных заданному x.
колво(s,x) =если null(s) то 0 иначе колво(cdr(s),x) +(если eq(car(s),x) то 1 иначе 0)
Какая функция из перечисленных ниже имеет тип (X x Y → Z) x X → (Y → Z)
g(f,a)=λ(x) f(a,x)
Редукция
заменяет вызов функции ее телом с заменой всех вхождений связанной переменной на выражение, соответствующее аргументу
Комбинатор фиксированной точки Y можно задать правилом редукции
Y a → a (Y a)
Что будет результатом работы функции отобр('(1 2 3), ув(5)), если ув(n) = λ(z) z+n?
(6 7 8)
Какая функция возвращает список, полученный из исходного после отбрасывания первого элемента
cdr
Укажите правильные утверждения:
в функциональном программировании физические адреса для размещения объектов определяются на этапе компиляции (т.е. распределение памяти является статическим, а не динамическим)
Какую формулу в языке Scheme следует использовать для проверки, что два числа X и Y не равны?
(NOT (= X Y))
Способ вычислений, при котором аргументы функции вычисляются до ее вызова, называется
энергичным
Языками, реализующими функциональную парадигму программирования, являются
LISP Haskell Scheme
Выражение "если f(x,y)>0 то 1 иначе 0" на языке Scheme будет выглядеть так
(IF (> (F X Y) 0) 1 0)