Leterate Haskell(.lhs)とHaddock
-
01-10-2019 - |
質問
現時点では、私はハドックだけを使用していますが、いくつかの本当に興味深い例を見た後(例: この要点)識字型のhaskellについては、プロジェクトで試してみたいと思っています。
私が得た質問は次のとおりです。
Haddockのコメントとして何を書いていますか?
複数のファイルに識字プログラミングをどのようにスケーリングしますか?複数のモジュールを備えたパッケージで読み書きのできるプログラミングが使用される例を教えてもらえますか?より大きなパッケージで識字プログラミングを使用した経験は何ですか?
読み書きのできるhaskellのどのフレーバー(マークダウン、ラテックス、...)が好ましいですか?
リテラシーなハスケルまたはプレーンバニラハスケルでプログラミングするのはなぜですか?あなたは両方のスタイルでプログラミングしていますか?もしそうなら、なぜですか?
ブロックスタイルが好きですか(
\begin{code}
)または鳥スタイル(>
)?なんで?
解決
私はたくさん書いていました 識字プログラム.
Haddockのコメントとして何を書いていますか?
外部APIドキュメント ハドックのコメントに入ります。他のすべては読み書きのできる部分に入ります。 「他のすべて」が含まれる場合があります:
- データ構造の内部不変
- なぜ あなたはこのように物事をしています
- 何 設計 コードの
- このデザインが選ばれた理由、他のデザインが試され、望んでいることがわかったもの
複数のファイルに識字プログラミングをどのようにスケーリングしますか?
同じ方法で、大きなラテックスドキュメントを複数のファイルにスケーリングします。モジュールごとに1つのファイル、次に巨大なファイル \include
それらすべて。
複数のモジュールを備えたパッケージで読み書きのできるプログラミングが使用される例を教えてもらえますか?
それはハスケルではありませんが、 クイックC--コンパイラ リテラシープログラミングを使用して書かれた大規模な機能プログラムです。
より大きなパッケージで識字プログラミングを使用した経験は何ですか?
識字プログラミングは、トリッキー、困難、または複雑なモジュールを文書化するために非常にうまく機能します。ほとんどの単純なモジュールでは、外部APIドキュメント(Haddockなど)で十分です。また、読み書きのできるプログラムは、12を超えるモジュールを含むデザインの全体像を実際に提供することはありません。そのためには、他のツールやテクニックが必要です。
読み書きのできるhaskellのどのフレーバー(マークダウン、ラテックス、...)が好ましいですか?
あなたがこのような大きな投資を行っているなら、私は数学の能力と一般的にツールのより大きな力のために、間違いなくラテックスを使っています。
リテラシーなハスケルまたはプレーンバニラハスケルでプログラミングするのはなぜですか?あなたは両方のスタイルでプログラミングしていますか?もしそうなら、なぜですか?
私のhaskellコードは、ほとんどの場合、すべてプレーンバニラです。
私はより多くのHaskellの経験を持っている高齢者と仕事をしており、彼らは読み書きのできるHaskellを放棄しました。システム内で最も古いモジュールのみが.lhsになる可能性があります。
Haskellの場合、読み書きのできるプログラミングは一種の余分です。識字プログラミングツールの大きな利点の1つは、コンパイラまたは言語定義がコードが表示される順序に掲載される可能性のある制約から解放されることです。しかし、Haskellにはそのような制約はほとんどありません。使用前に定義はありません。典型的な関数定義のために、私は選択しています
let
- バインディングまたはwhere
- バインディング補助名(またはその両方)。 識字プログラミング 派手なコメントについては決してありませんでしたし、「読み書きのできる」Haskellで、それはあなたが得るすべてのものです。気にする価値はありません。
ブロックスタイル( begin {code})または鳥スタイル(>)が好きですか?なんで?
私はブロックスタイルを強く好みます:
地球上の他のすべての識字プログラミングツールとほぼ互換性があります。 (バードトラックはHaskellに固有のものです。)
私の編集者は、ブロックスタイルでよりよく対処します。
他のヒント
インターネット上でプログラムを共有するつもりなら、MathjaxとマークダウンスタイルのLiterate Haskellの組み合わせが素晴らしい組み合わせであることがわかりました。このプログラム「Pandoc」は、PDFやHTMLを含む、この「Markdown+LHS」を希望するあらゆる形式に採用することで非常に素晴らしいです。 PandocにHTMLに出力するように指示すると、-mathjax(または必要に応じて他の同様のフラグ)を使用して、LaTex Mathフォーミュラをレンダリングできます。
このスタイルを使用するとき、私はそれが私にとってより読みやすく、マークダウンスタイルに合わせて適合しているように見えるので、鳥のスタイルが好ましいと思います。
MarkdownでPandocを使用することの素晴らしい点は、コード、数式に引用を追加し、本当にポータブルな形式を持つことができることです。科学研究論文に似ているが、実行可能であり、ブログ/Wikis/Webサイトに投稿することもできます。
ノーマンに別のポイントを与えるために、リテラシープログラミングはより明確なコードの配置に役立つと彼が言うために、ハスケルはコードで解決する問題が実際に興味深いものであり、説明テキストに囲まれて本当に利益を得ることができるほど表現力があると主張することができます。数学的な研究論文を考えてください。純粋な数学の良い論文には、数学的表記が何を意味するかについての動機または高レベルの解釈を説明するための多くのテキストがあります。たとえば、Navier-Stokes方程式に関する論文では、ニュートンの運動量の保存にどのように関連するかを説明するテキストで方程式の表記を囲むことは非常に便利です。
要約すると、Markdown+LHSスタイル、ラテックス数学の式、鳥スタイル、パンドクを埋め込むためのドル記号で大成功を収め、お勧めします。私は彼らが研究論文であるかのようにプログラムを書くことをお勧めし、あなたが研究論文の数学的表現と同じようにHaskell自体を扱います。