关于计划中的“cond”

时间:2013-06-11 13:15:46

标签: lisp scheme racket

我希望能够做到这一点。例如,这是我的代码:

    (cond [true AA]
          [else BB])

在AA中,我希望它做两件事。 1是设置全局变量的值,然后返回一个字符串。我该怎么做呢?

3 个答案:

答案 0 :(得分:9)

cond特殊形式中,每个条件后都有一个隐含的begin,因此可以写几个表达式,记住只返回最后一个的值。像这样:

(cond [<first condition>
       (set! global-variable value)
       "string to return"]
      [else
       "other return value"])

答案 1 :(得分:0)

这种事情可以在Scheme R5RS规范中轻松找到。 这是值得一读的,因为它是有史以来最好的语言规范之一

您可能会发现使用的其他语法关键字:

(if <predicate> <consequent> <alternate>)
(begin <expression-or-declaration> ... <expression>)
(case <expression> <case-clause> ...)
(and <test> ...)
... others ...

答案 2 :(得分:0)

创建一个辅助函数,完成两件事。请在适当时调用if语句:

(cond [(test? something) (your-function your-data)]
      [else (another-function your-data)])

一种不太直接的方法是调用两个函数并用“和”“链接”它们:

(cond [(test? something) 
        (and (do-this data) (do-that data))]
      [else (do-something-else data)])