Подтвердить что ты не робот

Грамотный Haskell (.lhs) и Пикша

В настоящий момент я использую только Haddock, но после просмотра некоторых действительно интересных примеров (например, этот смысл) грамотного Haskell, m заинтересованы в том, чтобы попробовать это в проекте.

Вопросы, которые я получил, следующие:

  • Что вы пишете как комментарии Haddock и что вы пишете в грамотной части?

  • Как вы распределяете грамотное программирование на несколько файлов? Может ли кто-нибудь указать мне пример, когда грамотное программирование используется в пакете с несколькими модулями? Каков ваш опыт использования грамотного программирования в более крупных пакетах?

  • Какой вкус (уценка, латекс,...) грамотного Haskell предпочтительнее?

  • Почему вы программируете в грамотном Haskell или простой ваниль Haskell? Вы программируете в обоих стилях, и если да, то почему?

  • Вы предпочитаете стиль блока (\begin{code}) или стиль Bird (>)? Почему?

4b9b3361

Ответ 1

Раньше я писал много грамотных программ.

Что вы пишете как комментарии Haddock и что вы пишете в грамотной части?

Документация внешнего API включена в комментарии Haddock. Все остальное идет в грамотную часть. "Все остальное" может включать:

  • Внутренние инварианты структур данных
  • Почему вы так поступаете?
  • Что такое код кода
  • Почему этот дизайн был выбран, какие другие проекты были опробованы и найдены желающими

Как вы масштабируете грамотное программирование для нескольких файлов?

Точно так же вы масштабируете большой документ LaTeX для нескольких файлов: один файл на модуль, а затем гигантский файл, который \include их всех.

Может ли кто-нибудь указать мне пример, где грамотное программирование используется в пакете с несколькими модулями?

Это не Haskell, но Quick C-- compiler - это большая функциональная программа, написанная с использованием грамотного программирования.

Каков ваш опыт использования грамотного программирования в больших пакетах?

Грамотное программирование очень хорошо работает для документирования сложных, сложных или сложных модулей. Для большинства простых модулей достаточно документации внешнего API (например, Haddock). И ни одна грамотная программа действительно не даст вам большой картины дизайна, который содержит более десятка модулей. Для этого вам нужны другие инструменты и методы.

Какой вкус (уценка, латекс,...) грамотного Haskell предпочтительнее?

Если вы делаете такие крупные инвестиции, я бы определенно пошел с LaTeX только из-за математической способности и большей мощности инструмента.

Почему вы программируете в грамотном Haskell или простой ваниль Haskell? Вы программируете в обоих стилях, и если да, то почему?

Мои коды Haskell почти всегда имеют простую ваниль по двум причинам:

  • Я работаю со старшими людьми, у которых больше опыта в Haskell, и они отказались от грамотного Haskell. Только самые старые модули в их системе имеют шанс быть .lhs.

  • Для Haskell грамотное программирование является излишним. Одним из больших преимуществ программы грамотного программирования является то, что вы освобождаетесь от любых ограничений, которые могут быть установлены компилятором или языком, в том порядке, в котором отображается ваш код. Но у Haskell почти нет таких ограничений: нет определения перед использованием, и для типичного определения функции у меня есть выбор let -связывающих или where -связывающих вспомогательных имен (или обоих). Грамотное программирование никогда не было просто фантастическими комментариями, а с "грамотным" Haskell, что обо всем, что вы получаете. Это не стоит беспокоить.

Вы предпочитаете стиль блока (\ begin {code}) или Bird-style ( > )? Почему?

Я предпочитаю стиль блока:

  • Он примерно совместим со всеми другими программами грамотного программирования на планете. (Птицы являются уникальными для Haskell.)

  • Мой редактор лучше справляется с блочным стилем.

Ответ 2

Если вы собираетесь делиться программами в Интернете, я нашел комбинацию грамотного haskell в стиле markdown с mathjax, чтобы быть отличной комбинацией. Программа "Pandoc" серьезно блестящая для того, чтобы взять эту "уценку + lhs" в любой желаемый формат, включая PDF или HTML. Если вы укажете Pandoc для вывода в HTML, вы можете использовать -mathjax (или другие аналогичные флаги, если хотите), чтобы визуализировать ваши математические формулы латекса.

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

Самое замечательное в использовании Pandoc с уценкой - это то, что вы можете добавить цитаты в свой код, математические формулы и иметь действительно портативный формат. Вы можете создать что-то, что похоже на научно-исследовательскую работу, но является исполняемым, а также можно размещать в блогах/вики/веб-сайтах.

Чтобы дать альтернативный пример Норманну, где он говорит, что грамотное программирование полезно для более четкой компоновки кода, можно утверждать, что Haskell достаточно выразителен, что проблемы, которые вы решаете с кодом, действительно интересны и могут действительно выиграть, будучи окруженным с пояснительным текстом. Подумайте о математической исследовательской работе. Хорошие статьи в чистой математике содержат много текста, чтобы объяснить мотивацию или более глубокие интерпретации того, что означает математическая нотация. Например, в статье об уравнениях Навье-Стокса было бы очень полезно окружить обозначение уравнений текстом, объясняющим, как оно относится к сохранению импульса Ньютона.

В целом, я имел хороший успех и рекомендую использовать стиль markdown + lhs, знак доллара, чтобы вставлять математические формулы латекс, стиль птицы и pandoc. Я бы рекомендовал писать программы, как если бы они были исследовательскими работами, и относиться к самому хэскелу, как к математическим выражениям в исследовательской работе.