2011-04-17 47 views
0

等于功能我写了这个程序:方案 - 使用列表

(define find-combination 
    {lambda (a b) 
    (if (eq? ((quotient (car a) (car b)) (quotient (car (cdr a)) (car (cdr b))))) 
     (display "1*v1" + ((quotient (car a) (car b))*"v2")) 
     (display "0*v1" + "0*v2"))}) 

(find-combination (list 2 2) (list 2 1)) 

a和b两个列表。它给我的下一个问题:程序的应用程序:预期的程序,给出:1;参数是:2.

我没有得到什么问题。有人可以帮助我吗?谢谢你。

回答

0

首先,您在eq?之后有太多括号 - 您写的意思是评估(quotient (car a) (car b))并将其作为参数(quotient (car (cdr a)) (car (cdr b)))的函数处理。这个错误意味着第一件事被评估为1,你的解释器预计它是一个过程,而不是一个整数。该线路应该是:

(if (eq? (quotient (car a) (car b)) (quotient (car (cdr a)) (car (cdr b)))) 

甚至:

(if (eq? (quotient (car a) (car b)) (quotient (cadr a) (cadr b))) 

除此之外,与display电话线接错 - 计划没有一个中间符号,所以+*是出位。

0

,首先你有一个大括号中的代码(拉姆达前一个)

还你身边,你传递给EQ参数另一组paranthesis的? 它应该是这样的:

(eq? (quotient (car a) (car b)) (quotient (car (cdr a)) (car (cdr b)))) 
0

在流程和球拍,括号改变事物的意义。

1 

是一个数字,但

(1) 

呼叫为1,函数...但1是一个数字,而不是一个功能,因此这将导致您所描述的错误。

你对花括号的使用对我来说也有点不安。