Основы функционального программирования/Структуры данных и базисные операции: различия между версиями

Содержимое удалено Содержимое добавлено
→‎Примеры: - опечатка
Строка 84:
Перед тем, как собственно начать реализовывать функцию <math>length</math>, необходимо понять, что она должна возвращать. Понятийное определение результата функции <math>length</math> может звучать как «количество элементов в списке, который передан функции в качестве параметра». Здесь возникает два случая — функции передан пустой список и функции передан непустой список. С первым случаем всё ясно — результат должен быть нулевым. Во втором случае задачу можно разбить на две подзадачи, путём разделения переданного списка на голову и хвост при помощи операций <math>head</math> и <math>tail</math>.
 
Осмысленно, что операция <math>head</math> возвращает первый элемент списка, а операция <math>tail</math> возвращает список из оставшихся элементов. Пусть известна длина списка, полученного при помощи операции <math>tail</math>, тогда длина исходного списка будет равна известной длинадлине, увеличенной на единицу. В этом случае можно легко записать определение самой функции <math>length</math>:
 
<math>length([]) = 0</math>