2014-11-23 104 views
1

我必须创建一个名为(list-push-front lst new-list)的过程,它将新列表中的元素添加到lst的前面。例如,输出为:(list-push-front'(4 3 7 1 2 9)'(1 2))应该给出
'(1 2 4 3 7 1 2 9)LISP追加方法

这就是我有这么远,但我收到的元数错误消息的参数(2)预期数量预期(1)

(define(list-push-front lst new-list) 
 
    (if(null? lst) 
 
    '() 
 
    (append(list-push-front(car new-list))(lst(car lst)))))

+0

出了什么问题只是'(追加新的列表LST )'? – xbug 2014-11-24 02:20:52

+0

这里只给出'list-push-front'一个参数:'(list-push-front(car new-list))'。你也尝试在这里应用'lst'作为函数:'(lst(car lst))'。如果您使用的是DrRacket,它可以突出“级别”中的缺口以帮助您查看代码的结构。 – molbdnilo 2014-11-24 12:19:23

回答

3

只要打电话给append过程中的给定数量的不匹配时,不正是你需要什么 - 当使用新程序时,你应该总是参考documentation。在这种情况下,我们没有写一个明确的递归,使用内置的功能就足够了:

(define (list-push-front lst new-list) 
    (append new-list lst)) 

例如:

(list-push-front '(4 3 7 1 2 9) '(1 2)) 
=> '(1 2 4 3 7 1 2 9)