Категории циклов for

11

Я помню , как однажды читал некоторые исследования , где был проанализирован тело кода C, и результаты были , что подавляющее большинство forциклов можно разделить на пять категорий, соответствующих функциональных эквивалентов map, filter, foldи т.д.

Я не могу найти эту статью / статью больше. Кто-нибудь может указать мне на это?

stusmith
источник
3
Я обнаружил нечто похожее на переполнение стека: stackoverflow.com/a/2647704/1009414 Может быть, там вы найдете некоторую информацию об этой статье.
Thaven
1
гомоморфизмы, катаморфизмы, анаморфизмы и т. д. могут стоить Google, для циклов, которых нет в списках
jk.

Ответы:

11

Это не точное совпадение с тем, что вы просили, но я думаю, что это довольно близко к сути вашего вопроса.

На странице этого сайта в Loops обсуждается ряд шаблонов циклов.

  • подсчет
  • фильтруют подсчета
  • аккумулируют
  • фильтруют с накоплением
  • поиск
  • экстремальный
  • экстремальный индекс
  • фильтр
  • карта
  • шарканье
  • слияние
  • ископаемый
  • пропустил условие

У них также есть страница о рекурсии, которая охватывает многие из тех же шаблонов рекурсивным способом.


источник
14
... Я надеялся, что "экстремальные" петли будут более, ну, экстремальные ...;)
Изката
0

Мне кажется, я тоже это слышал. Где-то в SICP-видео или книге я думаю, что слышал, что большинство (если не все) программ / алгоритмов могут быть выражены с использованием потоков и фильтров. Потоки начинаются на лекции 6А.

Что касается всех циклов (for, while, do-while и т. Д.), То все они реализованы с метками, сравнениями и условным переходом, поэтому они просто синтаксический сахар, облегчающий чтение и понимание.

Сильвестер
источник