Основы функционального программирования/Структуры данных и базисные операции — 2: различия между версиями
Содержимое удалено Содержимое добавлено
мНет описания правки |
Стилистика |
||
Строка 6:
== Типы в функциональных языках ==
<center><math>\#(f) : A \rightarrow B</math></center>
Строка 28:
Соответственно выражение, в котором все функции рассматриваются как функции одного аргумента, а единственной операцией является аппликация (применение), называются выражениями в форме «оператор-операнд». Такие функции получили название «каррированные», а сам процесс сведения типа функции к виду, приведённому в предыдущем абзаце — каррированием (по имени Карри Хаскелла).
<center><math>f (x) = x^{2} + 5 \Rightarrow \lambda x.(x^{2} + 5)</math></center>
Строка 59:
*<math>[X, Y]</math> — список.
К образцам предъявляется
Кроме образцов в функциональном программировании вводится такое понятие, как «клоз» (от англ. «clause»). По определению клозы выглядят так:
Строка 138:
<tt>==></tt> <math>6</math>
На примере этого вычисления наглядно видно, что при рекурсивных вызовах функций очень сильно используется память. В данном случае количество памяти пропорционально значению аргумента, но аргументов может быть большее число
Чтобы ответить на данный вопрос положительно, необходимо рассмотреть понятие аккумулятора (накопителя). Для этого можно рассмотреть следующий пример:
Строка 184:
#*<math>ReverseAll</math> — функция, получающая на вход списочную структуру и обращающая все её элементы, а также её саму.
#*<math>Position</math> — функция, возвращающая номер первого вхождения заданного атома в список.
#*<math>Set</math> — функция, возвращающая список из всех атомов,
#*<math>Frequency</math> — функция, возвращающая список пар (символ, частота). Каждая пара определяет атом из заданного списка и частоту его вхождения в этот список.
#Написа́ть (если это возможно) функции с накапливающим параметром для заданий из '''[[Основы функционального программирования/Структуры данных и базисные операции#Упражнения|упражнения 1]]''' '''[[Основы функционального программирования/Структуры данных и базисные операции|лекции 2]]'''.
|