对于这种嵌套的let-in的ocaml缩进样式

zel*_*ell 5 emacs ocaml coding-style nested

我正在阅读关于Ocaml嵌套版本的Ocaml Style指南.

http://www.seas.upenn.edu/~cis341/programming_style.html#16

有人建议

缩进嵌套的let表达式:嵌套的let表达式的代码块不应缩进.坏:

   let x = exp1 in
      let y = exp2 in
        x + y
Run Code Online (Sandbox Code Playgroud)

好:

   let x = exp1 in    
   let y = exp2 in
       x + y
Run Code Online (Sandbox Code Playgroud)

但是,你怎么看待如何缩进我的下一个程序.

let f = 
  let g = 3 in
    g + 2 
Run Code Online (Sandbox Code Playgroud)

上面的内容由emacs缩进.但显然,这些emacs的缩进违反了我之前引用的风格指南.要遵循这种风格,不应该更像这个吗?

let f = 
  let g = 3 in
  g + 2 
Run Code Online (Sandbox Code Playgroud)

谢谢你的想法.

@Gilles:在我目前的默认图阿雷格模式中,我得到了这样的缩进,这与你的不同

let f = 
  let g = 3 in
  let h = 4 in
    g + 2 
Run Code Online (Sandbox Code Playgroud)

你能解释我应该采取哪种配置来使你的图阿雷格模式缩进吗?

Gil*_*il' 5

官方caml-mode(标准 Ocaml 发行版的一部分)默认不意图表达表达式的主体let

let f = 
  let g = 3 in
  let h = 4 in
  g + 2 
Run Code Online (Sandbox Code Playgroud)

这是 Ocaml 作者使用的风格(因此是正确的风格)。根据我的经验,官方模式与官方风格非常匹配(这并不奇怪,因为它来自同一个人)。如果您得到不同的结果,则您(或在您的计算机上安装该模式的人员或发行版)必须已对其进行配置。

Tuareg 模式在我的机器上的上面的代码片段上放置了相同的缩进(Debian squeeze)。不同版本有不同的缩进默认值;tuareg-in-indent特别是,这是2.0.1的文档字符串:

关键字缩进多少个空格in
上游推荐 0,这是我们从 2.0.1 开始默认的值,而不是历史的tuareg-default-indent.