Основная сложность при работе с функциями высших порядков - по виду функции нельзя судить о типах ее аргументов. Необходимо каким-то образом указывать тип аргументов. Пусть Z – мн-во целых чисел, тогда f(x)=x+1 имеет тип Z->Z; g(x,y) имеет тип ZxZ->Z. И т.д. Рассмотрим функцию h(x,f)=x+f(x), которая имеет в качестве аргументов число и ф-ию, а возвращает число. X есть Z, f есть Z->Z, а тип результата Z. Тогда функция h имеет тип Zx(Z->Z)->Z. Функция дважды(f)=l(x)f(f(x)) имеет тип (Z->Z)->(Z->Z), т.к. f(f(x)) имеет тип Z.
Просмотров: 1048 | Дата добавления: 08.02.2016