我是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!"
)
)
)
语法检查结果没有“错误”。我也读过类似问题的答案,但我不能只想出来。剩下的唯一选择是,我正在进行错误的函数调用而不理解为什么。
期待您的反馈..
答案 0 :(得分:1)
问题在于您如何尝试调用该过程。而不是:
merge((list 1 2 3) (list 4 5 6))
试试这个,正确的方法。注意括号必须去的地方:
(merge (list 1 2 3) (list 4 5 6))