В стиле отступа ocaml для этого типа вложенного ввода - PullRequest
5 голосов
/ 12 июля 2011

Я читаю руководство по стилю Ocaml на вложенной версии Ocaml.

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

Предполагается, что

Отступ для вложенных выражений let: блоки кода с вложенными выражениями let не должны бытьотступ.Плохо:

   let x = exp1 in
      let y = exp2 in
        x + y

Хорошо:

   let x = exp1 in    
   let y = exp2 in
       x + y

Однако, что вы думаете о том, как сделать отступ для моей следующей программы.

let f = 
  let g = 3 in
    g + 2 

Выше указано отступом Emacs.Но, очевидно, это отступление от emacs нарушает руководство по стилю, которое я цитировал ранее.Чтобы следовать стилю, разве это не должно быть больше похоже на это?

let f = 
  let g = 3 in
  g + 2 

Спасибо за ваши идеи.

@ Gilles: В моем текущем по умолчанию ТуарегиВ режиме, я получаю такой отступ, который отличается от вашего

let f = 
  let g = 3 in
  let h = 4 in
    g + 2 

Не могли бы вы объяснить, какую конфигурацию мне следует сделать, чтобы сделать мой режим Туарега отступом как вашим?

Ответы [ 2 ]

4 голосов
/ 13 июля 2011

Официальный caml-mode (часть стандартного дистрибутива Ocaml) по умолчанию не подразумевает тело выражения let:

let f = 
  let g = 3 in
  let h = 4 in
  g + 2 

Этот стиль используется авторами Ocaml (следовательно,Правильный стиль).По моему опыту, официальный режим очень хорошо соответствует официальному стилю (неудивительно, поскольку он от одних и тех же людей).Если вы получаете что-то другое, вы (или человек или дистрибутив, установивший режим на вашем компьютере) должны его настроить.

Режим туарегов помещает такой же отступ в приведенный выше фрагментна моей машине (сжимать Debian).Различные версии имеют разные значения по умолчанию для отступов;в частности, это строка документации для tuareg-in-indent в 2.0.1:

Сколько пробелов для отступа от ключевого слова in.
В восходящем направлении рекомендует 0,и это то, что мы используем по умолчанию с 2.0.1 вместо исторического tuareg-default-indent.

3 голосов
/ 14 июля 2011

Я думаю, что у Туарега есть странное поведение, делающее отступ вложенной буквы. добавьте эти строки, чтобы вернуться в стиль отступа ocaml «по умолчанию», предложенный C. TROESTLER

      (add-hook 'tuareg-mode-hook
(function (lambda ()
  (setq tuareg-in-indent 0)
  (setq tuareg-let-always-indent t)
  (setq tuareg-let-indent tuareg-default-indent)
  (setq tuareg-with-indent 0)
  (setq tuareg-function-indent 0)
  (setq tuareg-fun-indent 0)
  (setq tuareg-parser-indent 0)
  (setq tuareg-match-indent 0)
  (setq tuareg-begin-indent tuareg-default-indent)
  (setq tuareg-parse-indent tuareg-default-indent); .mll
  (setq tuareg-rule-indent  tuareg-default-indent)

  (setq tuareg-font-lock-symbols nil)
      )))
...