diff --git a/book/05-данные-и-функции-функциональный-стиль/README.md b/book/05-данные-и-функции-функциональный-стиль/README.md index 1e53848..52d2450 100644 --- a/book/05-данные-и-функции-функциональный-стиль/README.md +++ b/book/05-данные-и-функции-функциональный-стиль/README.md @@ -871,7 +871,7 @@ T[] find(T)(T[] haystack, T needle) 2. `haystack[0]` осуществляет доступ к первому элементу `haystack`. 3. `haystack = haystack[1 .. $]` исключает из рассмотрения первый элемент `haystack`. -Конкретный способ, каким массивы реализуют эти операции, непросто распространить на другие контейнеры. Например, проверять с помощью выражения `haystack.length > 0`, есть ли в односвязном списке элементы, – подход, достойный премии Дарвина[^9]. Если не обеспечено постоянное кэширование длины списка (что по многим причинам весьма проблематично), то для вычисления длины списка таким способом потребуется время, пропорциональное самой длине списка, а быстрое обращение к началу списка занимает всего лишь несколько машинных инструкций. Применить к спискам индексацию – столь же проигрышная идея. Так что выделим сущность рассмотренных операций, представим полученный результат в виде трех именованных функций и оставим их реализацию типу `haystack`. Примерный синтаксис базовых операций, необходимых для реализации алгоритма линейного поиска: +Конкретный способ, каким массивы реализуют эти операции, непросто распространить на другие контейнеры. Например, проверять с помощью выражения `haystack.length > 0`, есть ли в односвязном списке элементы – подход, достойный премии Дарвина[^9]. Если не обеспечено постоянное кэширование длины списка (что по многим причинам весьма проблематично), то для вычисления длины списка таким способом потребуется время, пропорциональное самой длине списка, а быстрое обращение к началу списка занимает всего лишь несколько машинных инструкций. Применить к спискам индексацию – столь же проигрышная идея. Так что выделим сущность рассмотренных операций, представим полученный результат в виде трех именованных функций и оставим их реализацию типу `haystack`. Примерный синтаксис базовых операций, необходимых для реализации алгоритма линейного поиска: 1. `haystack.empty` – для проверки `haystack` на пустоту. 2. `haystack.front` – для получения первого элемента `haystack`.