Средства разработки приложений



              

Функции и вызовы функций - часть 2


При статическом разрешении результатом выражения, приведенного на рис. 1, будет 2, а при динамическом разрешении - 11. По сравнению со статическим разрешением, использование динамического связывания позволяет выражать многие сложные вычисления в более компактной форме, но потенциально приводит к большему числу ошибок и усложняет отладку программы []. В связи с этим в языке Scheme поддерживается статическое разрешение ссылок на переменные.

Вызов функции записывается в виде заключенного в круглые скобки выражения, возвращающего функцию, и аргументов этой функции: (<выражение-функция> <аргумент1> ...)

Функции, которые принимают другие функции в качестве аргумента, называются функциями высокого порядка. Например, встроенная в Scheme функция map, принимает два аргумента: первый аргумент - функция с одним параметром, второй аргумент - список. Функции map возвращает вновь построенный список, полученный путем применения к каждому элементу исходного списка функции, переданной в качестве первого аргумента. В следующем примере параметрами вызова функции map является безымянная функция, умножающая свой аргумент на два, и список целых чисел. В результате вычисления получаем список соответствующих чисел, умноженных на два: (map (lambda (x) (* x 2)) '(1 2 3 4 5)) => (2 4 6 8 10)


Содержание  Назад  Вперед