8

OCamlプログラムを分析し、スタイルとコードの改善を提案するツールはありますか?perlの世界には、悪いスタイルを避けるためのPerl::Criticがまだ存在します。

私が必要としているのは、スタイルについてだけでなく、物事をよりクリーンにし、OCamlプログラムで末尾再帰ではない構造を回避するためのヒントを作成するいくつかのツールです。

ヒントはありますか?

4

1 に答える 1

10

私はそれを使用していませんが、先週のCamlグループのメッセージはマスコットに言及しています。それはあなたが求めているもののようです。末尾再帰の基準についてはよくわかりません。上記のプロジェクトの作者はそれらについて言及していませんが、プラグイン機能については言及しています。

-dlinearまたは、 (for )を使用してコンパイルするとocamlopt[.opt]、関数が末尾呼び出しであるかどうかを示す線形化されたコードが生成されます。末尾呼び出し情報も生成されますが、変更ログ(3.11.0で追加された)-annot以外の参照が見つかりません。末尾呼び出しにタグを付ける方法は何ですか。逆に、末尾以外の呼び出しにタグを付けることはありません(または方法はありますか?)。以下は、と呼ばれる関数の出力の例です。sum

let rec sum a = function
    | x when x = 0 -> a
    | x -> sum (a+1) (x-1)

(はるかに多くの出力の中で)生成し、

*** Linearized code
camlTail__sum_58:
  if x/30[%rbx] !=s 1 goto L100
  return R/0[%rax]
  L100:
  I/31[%rbx] := I/31[%rbx] + -2
  I/32[%rax] := I/32[%rax] + 2
  tailcall "camlTail__sum_58" R/0[%rax] R/1[%rbx]

でも、経験が最善の策になると思います。いくつかの人気のあるプロジェクト(たとえば、バッテリー)に目を通し、スタイルと典型的な慣習の感触をつかんでください。accプラグインがアキュムレータ変数または継続を呼び出すのに役立つとは思いませんcont

于 2011-01-03T15:56:02.753 に答える