在这个问题的启发下,我决定在Scheme中重写这段代码,因为我现在正在使用SICP。任何反馈欢迎。
#lang racket
;assume cup, is-empty?, refill and drink are operations understood by the environment
(define (coffee cup)
(if (is-empty? cup)
(coffee (refill cup))
(drink cup)))发布于 2016-02-03 19:19:30
在Lisp方言中,缩进是相当重要的。它不确定代码是如何工作的,但是能够直观地解析代码是必要的,因为另一种方法是计算括号。
通过这个缩进,您可以直观地看到if后面的2行是if语句的一部分:
(define (coffee cup)
(if (is-empty? cup)
(coffee (refill cup))
(drink cup)))我只是把代码复制到Emacs中,让它切换到方案模式,然后让它恢复。您不必使用Emacs,但是您应该使用一个能理解您使用的Lisp方言的编辑器。如果你把括号搞乱了,编辑器会奇怪地缩进一些东西,你可以直观地看到它是错误的,而不必计算括号。
https://codereview.stackexchange.com/questions/118760
复制相似问题