3

我如何在方案语言上定义这个返回if x>0 + else * 的函数:

plus_or_muliti(int x) {
    if (x>0) return +;
    else return *;
}

我试试这个,它在球拍上不起作用:

(define (plus_or_multi x)
  (if (>= x 0) + *))

我收到了这个错误

+: expected a function call, but there is no open parenthesis before this function
4

2 回答 2

0

该代码在完整的 Scheme(在本例中为 Racket)实现中完全有效,但根据您收到的错误,您似乎使用的是初级学生语言,这是 Racket 系统附带的几种语言之一。BSL 旨在帮助避免初学者在使用基于 Scheme 的语言时常见的一些错误,并且所有教学语言都旨在与How to Design Programs书一起使用。事实上,Racket 附带的一些库在htdporhtdp2模块中,并且从那本书派生,即使它们可以用于通用应用程序。在 DrRacket 语言 -> 选择语言菜单中,您可以选择语言的完整版本,这将允许您使用...完整语言。

于 2017-11-02T23:17:39.273 回答
-2

你的代码很好。

$ chibi-scheme
> (define (plus_or_multi x)
(if (>= x 0) + *))
> (plus_or_multi 5)
#<opcode "+">
> (plus_or_multi -2)
#<opcode "*">

它不是您使用的方案解释器。

于 2017-04-05T07:23:29.723 回答