使用scheme得到3个值的中值

kri*_*ger 1 scheme

这次的问题是得到三个值的中位数(简单)

我这样做了:

(define (med x y z) (car(cdr(x y z)))
Run Code Online (Sandbox Code Playgroud)

它被接受但是在测试时:

(med 3 4 5)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

错误:尝试调用非过程
(2 3 4)

输入字母而不是数字时,我得到:

(md x y z)
Run Code Online (Sandbox Code Playgroud)

错误:未定义杂物
Ý
(包用户)

使用xyz以外的东西我得到:

(md d l m)
Run Code Online (Sandbox Code Playgroud)

错误:未定义的变量
d
(包用户)

这个问题被删除了,不知道怎么回事

写一个返回3个值中值的函数

很抱歉编辑我得到的问题我应该先按顺序放置值,而不仅仅是一个窗台车和cdr的东西,所以我这样做了

33> (define (med x y z)
   (if(and(

      (<x y) (<y z) y

               if(and(

                    (<y x) (<x z) x z)))))

Warning: invalid expression
         (if (and< (<x y) (<y z) y if (and ((<y x) (<x z) x z))))
Run Code Online (Sandbox Code Playgroud)

但正如你所见,我得到一个警告所以什么是wronge?

Gre*_*ill 5

您可能想要创建一个列表,如下所示:

(define (med x y z) (car(cdr(list x y z)))
Run Code Online (Sandbox Code Playgroud)

但是,将值捆绑到列表中只是为了再次撤消它们似乎是浪费.这会产生同样的效果:

(define (med x y z) y)
Run Code Online (Sandbox Code Playgroud)