我正在尝试在方案中定义一个函数,该函数在调用时打印一条消息,然后是换行符。为此,我尝试像这样使用嵌套的 lambda:
(define message
(lambda (msg)
(lambda (newL)
(newline)
)
(display msg))
)
但是,当我这样做时,并调用如下函数:
(message "#f")
它只打印#f,不创建换行符。如果我在函数中反转 lambda 顺序并交换 newL 和 msg lambda 的位置,那么它只会打印一个换行符而不显示消息!
该函数在此代码块中调用:
(define (permute upList)
(if (null? upList)
(message "#f")
;permutation code
)
)
不使用嵌套 lambda 时收到的错误消息如下:
错误:非程序调用:#
Call history:
<syntax> (permute (quote ()))
<syntax> (quote ())
<syntax> (##core#quote ())
<eval> (permute (quote ()))
<eval> [permute] (null? upList)
<eval> [permute] (message "#f")
<eval> [message] ((display msg) (newline))
<eval> [message] (display msg)
<eval> [message] (newline) <--
任何帮助,将不胜感激。