方案列表结构

时间:2012-04-01 15:31:18

标签: list scheme

好吧,我正在尝试使用函数列表的元素。但是我在代码中使用它时遇到问题。

(func(list sum)(list 1 2 3))我试图将list1中的sum元素应用到我的list2中。 sum被描述为以列表作为参数。我刚刚在list1中使用了一个函数进行尝试。然而

    (display (car list1)) --> sum
    (display list2)--->(1 2 3)
    (display (list (sum list2)))--->(6)
    (display ((car list1) list2))---> ERROR 

错误:函数调用:期望在打开括号后的函数,但收到'sum

我无法理解它为什么会出现此错误。如你所见(car list1)指的是sum,list2指的是(1 2 3)llpist。

你能告诉我我有什么不对吗? THX。

1 个答案:

答案 0 :(得分:0)

我们需要看到sum的实现以及您创建列表的确切方式,我猜您正在传递符号 'sum和不是程序 sum。当我尝试以下操作时,它可以正常工作,而不会报告您的问题:

; this is guesswork, OP didn't provide enough information
(define sum (lambda (lst) (apply + lst)))
(define list1 (list sum))
(define list2 (list 1 2 3))

(display (car list1))
(display list2)
(display (list (sum list2)))
(display ((car list1) list2)) ; this works for me