首页 > 解决方案 > 是否有 SICP 练习的风格指南?

问题描述

我目前正在通过 SICP 工作,但我还不太习惯编写 Scheme 代码的风格。有什么风格指南可以作为这本书的伴侣吗?到目前为止,我只找到了第 1.1.1 节中关于“漂亮打印”的评论。

标签: schemelispsicp

解决方案


Gerald Jay Sussman是SICP的作者之一,也是 Scheme 的作者之一。他们1986 年在 HP的非常酷的视频讲座,他们并不认为 Scheme 会那么有名,所以他们将其称为更通用的名称 Lisp。不要混淆,因为 SICP 是 100% 方案,因此方案编码风格将是正确的路径。

Scheme wiki 有一个样式指南以及通用变量命名约定注释样式

Scheme 是 Lisp 的一种新方言,具有词法闭包和一个命名空间作为核心功能。它使用,和define代替. DrRacket IDE 实际上将带有以“de”开头的运算符的列表视为. 例如。defundefparameterdefvardefine

;;; example procedure test
(define (test arg1 arg2)
  ;; two space indent after define, let and friends
  (if (test? arg1 arg2)                   ; predicates tend to end with ?
      (consequent arg1 arg2)              ; if you split if then arguments align
      (alternative "extra long argument"  ; if you split arguments in procedure call arguments are aligned
                   arg1
                   arg2)))                ; ending parens keep together

在 Common Lisp 中,大部分编码风格是相同的:

;;; example function test
(defun test (arg1 arg2)
  ;; two space indent after defun, let and friends
  (if (testp arg1 arg2)                   ; predicates tend to end with p
      (consequent arg1 arg2)              ; if you split if then arguments align
      (alternative "extra long argument"  ; if you split arguments in procedure call arguments are aligned
                   arg1
                   arg2)))                ; ending parens keep together

Common Lisp 风格的标准参考,包括注释约定,是 Peter Norvig 和 Kent Pitman 的优秀 Lisp 编程风格教程。您可以将其用作方案资源的补充。

PS:编码风格固执己见。该语言不太关心这些,所以这只是为了使代码更易于人类阅读。


推荐阅读