这里是abs
一个定义:
(define (abs n)
((if (< n 0) - +) n))
当给返回评估-
的结果,否则+
所以如果你是通过-5
变得(- -5)
和的情况下5
获得通过,也为负数变成(+ 5)
。两者评估为5
。你看到我正在使用表达式作为函数返回吗?这也就是在括号的意思..在一个类似C语言无视围绕每个学期你有双括号几个地方的括号的时候我可能会做类似(n < 0 ? sub : add)(0, n)
在你cond
:
((display "Time") (newline))
((display n) (newline) (countdown (- n 1)))
他们都假设显示函数返回一个可以应用的函数。它不会,它会告诉你,这不是一个函数失败。
如果您正在寻找将命令组合在一起,如C语言中的{}
,那么您正在寻找特殊形式begin
。例如。(begin 1 2 3) ; ==> 3
cond
在它的每一个方面的明确begin
所以如果你只是想每一个部分进行评估修订如下:
(define (countdown n)
(cond ((zero? n) (display "Time") (newline))
(else (display n) (newline) (countdown (- n 1)))))
的另一种方法格式化是这样的:
(define (countdown n)
(cond
((zero? n)
(display "Time") (newline))
(else
(display n)
(newline)
(countdown (- n 1)))))
注意括号与同一级别对齐,以便您知道下一个词何时开始。它可以帮助你阅读代码,因为你在问题中的格式没有提供任何线索。得到一个适当的编辑器来做你的编码。