如何允许列表作为参数Scheme输入

时间:2014-11-04 11:21:14

标签: list arguments scheme racket

我一直在尝试编写一个名为short的过程,它接受两个都是列表的参数。我可以使用'x'和'y'来表示列表将作为参数输入吗?我已经写出了程序,我没有看到任何错误,但当我尝试运行它时,交互面板说“应用程序:不是一个过程;期望一个可以应用于参数的过程 给出:2 参数...

3" 我不太清楚如何解释这个。我写的程序如下。

(define (shorter x y)
  (if ((length x) < (length y)) 
      x 
      (if ((length x) > (length y)) 
          y 
          x)))

1 个答案:

答案 0 :(得分:4)

Racket是一种前缀语言,这意味着运算符应该在参数之前出现。怎么样:

(define (shorter x y)
  (if (< (length x) (length y))
      x 
      (if (> (length x) (length y)) 
          y 
          x)))

...或

(define (shorter x y)
  (if (<= (length x) (length y))
      x
      y))