方案编码风格问题

时间:2009-07-05 15:16:42

标签: functional-programming lisp scheme

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

我应该将表格格式化为:

一个。

if()
  ()
  ()

或b。

  if () ()
        ()

或c。

if () () ()

我应该将cond子句格式化为
一个。

  cond ()
       ()

或b。

cond
()
()

我什么时候使用单身;评论和加倍;;?

3 个答案:

答案 0 :(得分:7)

Here是一个Lisp风格指南,here是推荐的评论风格。

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

答案 1 :(得分:6)

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

(if test
    then
    else)

(cond
  (test1 exp1)
  (test2 exp2)
  (else exp3))

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

(cond
  (test1
   exp1
   exp2)
  (else
   exp3
   exp4))

评论惯例有点宽松。当我编写谨慎的代码时,我会这样做:

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


(define (f g . x)
  "docstring goes here"
  ;; in-function comments
  (g x)) ; trailing line comment

;;;用法的确切界限各不相同。特别是,有些人(包括我)不太喜欢尾随注释,而是使用;进行功能注释,使用;;;进行部分注释。

答案 2 :(得分:5)

看看Peter Norvig的"Tutorial on Good Lisp Programming Style"虽然你会在任何Scheme / Lisp书中找到你的特定问题的答案。