好吧,我正在尝试使用函数列表的元素。但是我在代码中使用它时遇到问题。
(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。
答案 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