方案编码风格问题

unj*_*nj2 6 lisp scheme functional-programming

我对我的代码的Scheme样式感到困惑.

我应该格式化表格如下:

一个.

if()
  ()
  ()
Run Code Online (Sandbox Code Playgroud)

或b.

  if () ()
        ()
Run Code Online (Sandbox Code Playgroud)

或c.

if () () ()
Run Code Online (Sandbox Code Playgroud)

我应该将cond条款格式化为
.

  cond ()
       ()
Run Code Online (Sandbox Code Playgroud)

或b.

cond
()
()
Run Code Online (Sandbox Code Playgroud)

我什么时候使用单身; 评论和双重;;?

Dou*_*rie 7

是一个Lisp风格指南,是推荐的评论风格.

如果你有一个emacs样式编辑器,在你的s表达式中键入CMq应该为你格式化; 如果您的换行符合理,它将为您提供正确格式化的代码(并且缩进列表的编辑器配置没有太严重).


Nat*_*ers 6

要填写Doug针对您的具体问题的答案:

(if test
    then
    else)

(cond
  (test1 exp1)
  (test2 exp2)
  (else exp3))
Run Code Online (Sandbox Code Playgroud)

或者,对于具有长系列表达式的conds:

(cond
  (test1
   exp1
   exp2)
  (else
   exp3
   exp4))
Run Code Online (Sandbox Code Playgroud)

评论惯例有点宽松.当我编写细致的代码时,我会这样做:

;;; new section ;;;
;;; section comments


(define (f g . x)
  "docstring goes here"
  ;; in-function comments
  (g x)) ; trailing line comment
Run Code Online (Sandbox Code Playgroud)

;vs ;;使用的确切界限各不相同.特别是,有些人(包括我)不太喜欢尾随行注释,而是;用于函数内注释和;;;部分注释.


Luí*_*ira 5

看看Peter Norvig的"Good Lisp编程风格教程",尽管你可以在任何Scheme/Lisp书中找到你特定问题的答案.