编码风格 – 是否有一个OCaml工具支持使用Perl的Perl :: Critic模块等最佳实践?

是否存在分析OCaml程序并建议样式和代码方面的一些改进的工具?在perl的世界里仍然存在 Perl::Critic以避免糟糕的风格.

我需要的是一些工具,这些工具不仅可以提示风格,还可以使事情更清晰,并避免在OCaml程序中不是尾递归的构造.

任何提示?

我没有使用它,但上周 message on the Caml Groups提到了 Mascot.它看起来就像你追求的那样.我不确定尾递归标准;上述项目的作者没有提及它们,但确实提到了插件功能.

或者,使用-dlinear(对于ocamlopt [.opt])进行编译将生成线性化代码,如果函数是尾调用,则会提及该代码. – 也不会产生尾调用信息,但除了changelog之外我找不到参考(它在3.11.0中添加).它标记尾调用的方式是什么,它不进行反转,标记非尾调用(或者可能有一种方法?).下面是一个名为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]

我认为经验将是你最好的选择.查看一些受欢迎的项目(例如Batteries),以了解风格和典型约定.我不认为插件会帮助你调用你的累加器变量acc或continuation cont.

相关文章
相关标签/搜索