我正在尝试创建一个接受两个颜色列表的过程。因为这个程序在另一个程序(本地)内。当我传递参数时,我需要转换image-> color-list。我尝试了不同的方法来声明它们,但编译错误说:
找到一个多次使用的变量:image-> color-list
或
期望变量,但找到了一个部分
(define (colourLists image->color-list bg image->color-list fg))
(define (colourLists (image->color-list bg) (image->color-list fg)))
(define (colourLists (image->color-list bg image->color-list fg)))
是否有可能做到这一点或是不可能的事情?
答案 0 :(得分:2)
“我正在尝试创建一个接受两个颜色列表的过程。”
你甚至不需要进一步思考。此时,您知道您要编写的函数的形状必须符合以下形式:
;; some-procedure: (listof color) (listof color) -> ???
(define (some-procedure colour-list-1 colour-list-2)
<fill-me-in>)
也就是说,处理其他地方的image->color
列表内容。该函数应该只关心它获取颜色列表。它的定义根本不关心它输入的颜色列表是否来自image->color
。
答案 1 :(得分:2)
让我们看看我是否做对了。您在另一个过程中有一个过程,它必须接收两个列表,但您必须在传递它们之前转换它们。也许是这样的事情?
(define (outerProcedure)
(define (colourLists color-lst1 color-lst2)
<inner body>)
<outer body>
; colourLists is called at some point in the outer body
(colourLists (image->color-list bg) ; bg and fg were defined somewhere else
(image->color-list fg)))
重点是:在将列表传递给内部过程之前,您必须转换列表。或者,您可以在内部过程中执行转换:
(define (outerProcedure)
(define (colourLists bg fg)
(let ((color-lst1 (image->color-list bg))
(color-lst2 (image->color-list fg)))
<inner body>))
<outer body>
; colourLists is called at some point in the outer body
(colourLists bg fg)) ; bg and fg were defined somewhere else