Scheme函数调用中的应用程序错误

时间:2013-11-10 02:25:52

标签: function scheme procedure

我是Scheme的新手,必须编写两个列表中众所周知的'merge-function'。虽然我理解算法,但我一遍又一遍地得到这个错误:

**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!"

    )
   )
)

语法检查结果没有“错误”。我也读过类似问题的答案,但我不能只想出来。剩下的唯一选择是,我正在进行错误的函数调用而不理解为什么。

期待您的反馈..

1 个答案:

答案 0 :(得分:1)

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

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

试试这个,正确的方法。注意括号必须去的地方:

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