0

我是 Scheme 的新手,必须编写两个列表的著名“合并功能”。虽然我了解该算法,但我一遍又一遍地收到此错误:

**merge((list 1 2 3) (list 4 5 6))**
<procedure:merge>
. . application: not a procedure;
expected a procedure that can be applied to arguments
given: (1 2 3)  arguments...:(4 5 6)

我认为我的代码是错误的,所以我一直在调试它。改变一个虚拟函数,看看它是否仍然会做出同样的反应。它做了。

#lang scheme

(define (merge list1 list2)

  (cond ((null? list1)list2)

    ((null? list2)list1)

    (else

    "Nothing more to do!"

    )
   )
)

语法检查结果没有“错误”。我也阅读了类似问题的答案,但我无法弄清楚。剩下的唯一选择是我在不理解原因的情况下进行了错误的函数调用。

期待您的反馈意见..

4

1 回答 1

1

问题在于您如何尝试调用该过程。而不是这个:

merge((list 1 2 3) (list 4 5 6))

试试这个,正确的方法。注意括号必须放在哪里:

(merge (list 1 2 3) (list 4 5 6))
于 2013-11-10T02:30:12.140 回答