如果是else子句或cond在Racket中

use*_*060 2 racket

我想在拍,打印1,如果值写一个简单的程序a是> 1,版画0,如果价值a = 0和-1如果a < 0.我写了以下但看起来它没有照顾第三个条件.实际上,我没有包括第三个条件所以我不知道如何使用'if'子句检查所有三个条件.赞赏一点指导.

我是Racket的新手.我的计划是:

#lang racket
(define a 3);


(if (> a 0)
    0 
    1)
-1
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Mai*_*tor 6

您正在寻找的功能已在名称sgn下定义.

您的实施不起作用的原因是它不完整.你要:

(if (= a 0)
    0
    (if (< a 0)
        -1
        1))
Run Code Online (Sandbox Code Playgroud)

或者只是看起来更好看:

(cond 
    [(negative? n) -1]
    [(positive? n)  1]
    [else 0])
Run Code Online (Sandbox Code Playgroud)

  • 一个小注意事项,因为这个问题只是被标记为“球拍”(不是“方案”):虽然不是强制性的,但在球拍中对某些形式使用方括号是惯用的,比如“cond”中的子句。例如`(cond [cond expr] [else expr])`。 (2认同)