41

現時点ではHaddockのみを使用していますが、読み書きのできるHaskellの非常に興味深い例(この要点など)をいくつか見た後、プロジェクトで試してみることに興味があります。

私が得た質問は次のとおりです。

  • あなたはハドックのコメントとして何を書きますか、そしてあなたは読み書きのできる部分に何を書きますか?

  • 文芸的プログラミングを複数のファイルにどのようにスケーリングしますか?複数のモジュールを含むパッケージで文芸的プログラミングが使用されている例を誰かに教えてもらえますか?より大きなパッケージで文芸的プログラミングを使用した経験は何ですか?

  • 読み書きのできるHaskellのどのフレーバー(マークダウン、ラテックスなど)が好ましいですか?

  • なぜあなたは読み書きのできるHaskellやプレーンなバニラHaskellでプログラミングしているのですか?両方のスタイルでプログラミングしていますか?もしそうなら、なぜですか?

  • \begin{code}ブロックスタイル( )とバードスタイル()のどちらが好き>ですか?なんで?

4

2 に答える 2

36

私はよく読み書きのできるプログラムをたくさん書いていました。

あなたはハドックのコメントとして何を書きますか、そしてあなたは読み書きのできる部分に何を書きますか?

外部APIのドキュメントは、Haddockのコメントに含まれています。他のすべては読み書きのできる部分に入ります。「その他すべて」には、次のものが含まれる場合があります。

  • データ構造の内部不変量
  • なぜあなたはこのように物事をしているのですか
  • コードのデザインは何ですか
  • このデザインが選ばれた理由、他にどのようなデザインが試され、欲しかったのか

文芸的プログラミングを複数のファイルにどのようにスケーリングしますか?

大きなLaTeXドキュメントを複数のファイルにスケーリングするのと同じ方法です。モジュールごとに1つのファイルを作成し、次に\includeそれらすべてを含む巨大なファイルを作成します。

複数のモジュールを含むパッケージで文芸的プログラミングが使用されている例を誰かに教えてもらえますか?

Haskellではありませんが、Quick C--コンパイラは、文芸的プログラミングを使用して記述された大規模な関数型プログラムです。

より大きなパッケージで文芸的プログラミングを使用した経験は何ですか?

文芸的プログラミングは、トリッキー、難しい、または複雑なモジュールを文書化するのに非常にうまく機能します。ほとんどの単純なモジュールの場合、外部APIドキュメント(Haddockなど)で十分です。そして、12を超えるモジュールを含む設計の全体像を実際に提供する文芸的プログラムはありません。そのためには、他のツールやテクニックが必要です。

読み書きのできるHaskellのどのフレーバー(マークダウン、ラテックスなど)が好ましいですか?

あなたがそのような大規模な投資をしているのなら、数学の能力と一般的にツールのより大きな力のために、私は間違いなくLaTeXを使うでしょう。

なぜあなたは読み書きのできるHaskellやプレーンなバニラHaskellでプログラミングしているのですか?両方のスタイルでプログラミングしていますか?もしそうなら、なぜですか?

私のHaskellコードは、2つの理由から、ほとんどの場合すべてプレーンバニラです。

  • 私はHaskellの経験が豊富な高齢者と協力しており、彼らは読み書きのできるHaskellを放棄しています。システム内で最も古いモジュールのみが.lhsになる可能性があります。

  • Haskellにとって、文芸的プログラミングは一種の不必要です。文芸的プログラミングツールの大きな利点の1つは、コンパイラまたは言語定義がコードの表示順序に課す可能性のある制約から解放されることです。しかし、Haskellにはそのような制約はほとんどありません。使用前の定義はありません。一般的な関数定義では、let-bindingまたはwhere-binding補助名(あるいはその両方)を選択できます。 文芸的プログラミングは決して派手なコメントだけではありませんでした、そして「文芸的」Haskellであなたが得るすべてについてです。わざわざする価値はありません。

ブロックスタイル(\ begin {code})またはバードスタイル(>)のどちらが好きですか?なんで?

私はブロックスタイルを強く好みます:

  • これは、地球上の他のすべての文芸的プログラミングツールとほぼ互換性があります。(鳥のトラックはHaskellに固有のものです。)

  • 私のエディターはブロックスタイルにうまく対応します。

于 2010-04-25T19:42:39.027 に答える
10

インターネット上でプログラムを共有するつもりなら、マークダウンスタイルの読み書きのできるHaskellとmathjaxの組み合わせが素晴らしい組み合わせであることがわかりました。プログラム「Pandoc」は、この「markdown + lhs」をPDFやHTMLなど、任意の形式に変換するのに非常に優れています。PandocにHTMLに出力するように指示する場合は、-mathjax(または必要に応じて他の同様のフラグ)を使用して、ラテックスの数式をレンダリングできます。

このスタイルを使用する場合、鳥のスタイルの方が読みやすく、マークダウンスタイルとの相性が良いように見えるので好ましいと思います。

マークダウンでPandocを使用することの素晴らしい点は、コードや数式に引用を追加でき、非常に移植性の高い形式にすることができることです。科学研究論文に似ているが実行可能であり、ブログ/ウィキ/ウェブサイトに投稿することもできるものを構築することができます。

ノーマンが文芸的プログラミングがより明確なコード配置に役立つと言っている別のポイントを与えるために、Haskellはコードで解決する問題が実際に興味深く、説明文に囲まれることで本当に利益を得ることができるほど表現力があると主張することができます。数学の研究論文を考えてみてください。純粋数学の優れた論文には、数学表記の意味の動機や高レベルの解釈を説明するためのテキストがたくさんあります。たとえば、ナビエ・ストークス方程式に関する論文では、方程式の表記をニュートンの運動量保存にどのように関連するかを説明するテキストで囲むと非常に便利です。

要約すると、markdown + lhsスタイル、ドル記号を使用してラテックスの数式、鳥のスタイル、およびpandocを使用することで、成功を収め、推奨しています。プログラムを研究論文のように書き、ハスケル自体を研究論文の数式と同じように扱うことをお勧めします。

于 2012-02-29T21:39:44.197 に答える