В следующем месяце я собираюсь работать над новым проектом R & D, который будет использовать функциональный язык программирования (я проголосовал за Haskell, но прямо сейчас F # получил больше консенсуса). Теперь я играл с такими языками некоторое время и разработал с ними несколько инструментов командной строки, но это довольно большой проект, и я пытаюсь улучшить свои знания и технику функционального программирования. Я также много читал по этой теме, но я не могу найти ни книг, ни ресурсов, которые документируют анти-шаблоны в мире функционального программирования.
Теперь, узнав об анти-шаблонах, узнайте о неудачах умных людей: в ООП я знаю несколько из них, и я достаточно опытен, чтобы выбирать мудро, когда что-то, что обычно является анти- -паттерн, отлично соответствует моим потребностям. Но я могу выбрать это, потому что я знаю урок, полученный другими умными парнями.
Таким образом, мой вопрос: есть ли документированный анти-шаблоны в функциональном программировании? До сих пор все мои коллеги говорили мне, что они не знают, но они не могут сказать, почему.
- Если да, укажите одну ссылку на авторитетный источник (каталог, эссе, книгу или эквивалент).
- Если нет, пожалуйста, подтвердите свой ответ правильную теорему.
Пожалуйста, не включайте этот вопрос в список: это логический вопрос, который требует только доказательства для оценки ответа. Например, если вы Олег Киселев, "Да" достаточно, так как каждый сможет найти ваше эссе по этой теме. Однако, пожалуйста, будьте щедры.
Обратите внимание, что я ищу формальные анти-шаблоны, а не простые вредные привычки или плохие практики.
Из связанная статья Википедии о Anti-Patterns:
... должно присутствовать как минимум два ключевых элемента, чтобы формально отличить фактический анти-шаблон от простой дурной привычки, плохой практики или плохой идеи:
- некоторые повторяющиеся шаблоны действий, процесса или структуры, которые изначально кажутся полезными, но в конечном итоге приводят к более плохим последствиям, чем положительные результаты, и
- существует альтернативное решение, которое четко документировано, доказано на практике и повторяемо.
Более того, под документированным я имею в виду что-то из авторитетных авторов или известных источников.
К языкам, к которым я привык, относятся:
- Haskell (где я действительно начинаю думать, что если код компилируется, он работает!)
- Scala
- F #
но я также могу адаптировать знания о анти-шаблонах, задокументированных на других функциональных языках.
Я много искал в Интернете, но все ресурсы, которые я нашел, либо связаны с ООП, либо работают с макетом (определяют переменную в начале функции и т.п.).