Functional programming 方案编码风格问题

Functional programming 方案编码风格问题,functional-programming,lisp,scheme,Functional Programming,Lisp,Scheme,我对代码的方案样式感到困惑 我是否应将if表格格式化为: a 或者b 或者c if () () () 我是否应该将cond子句的格式设置为 a 或者b 我什么时候用单人床;注释和双引号 是Lisp风格的指南,也是推荐的注释风格 如果您有一个emacs样式编辑器,那么在s表达式中键入C-M-q应该可以为您设置格式;如果换行符是合理的(并且缩进列表的编辑器配置没有受到太大的影响),它将使您的代码格式正确 要填写Doug对您具体问题的回答: (if test then else)

我对代码的方案样式感到困惑

我是否应将if表格格式化为:

a

或者b

或者c

if () () ()
我是否应该将cond子句的格式设置为
a

或者b

我什么时候用单人床;注释和双引号

是Lisp风格的指南,也是推荐的注释风格


如果您有一个emacs样式编辑器,那么在s表达式中键入C-M-q应该可以为您设置格式;如果换行符是合理的(并且缩进列表的编辑器配置没有受到太大的影响),它将使您的代码格式正确

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

(if test
    then
    else)

(cond
  (test1 exp1)
  (test2 exp2)
  (else exp3))
或者,对于具有长系列表达式的条件:

(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

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

尽管您可以在任何Scheme/Lisp书中找到特定问题的答案,但请看一下Peter Norvig的答案。

注意,大多数Scheme没有“文档字符串”。
cond
()
()
(if test
    then
    else)

(cond
  (test1 exp1)
  (test2 exp2)
  (else exp3))
(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