我是计划的新手,我正在努力做一个非常直接的小计划。 但我不断收到此错误消息“语法关键字可能不会用作表达式:if”。
有人可以告诉我,如果我在程序中遗漏了某些内容,或者我是否犯了某种错误?
这是我的计划。
(define (foo lis k)
(COND
((NULL? lis) '())
(IF (< (CAR lis) k)
(display (CAR lis))
ELSE (display (CDR lis)))
))
(foo '(1 5 3 2 4) 3)
由于
-Gunnlaugur
答案 0 :(得分:2)
我不确定你要做什么,但似乎不需要那里:
(define (foo lis k)
(cond
((null? lis) '())
((< (car lis) k)
(display (car lis)))
(else (display (cdr lis)))))
(foo '(1 5 3 2 4) 3)
答案 1 :(得分:0)
cond
采用*
(condition expr1 expr2 ... result)
既然你给了
(if (< (car lis) k) (display (car lis)) else (display (cdr lis)))
Scheme将尝试查看if
是否为true,然后运行接下来的四个表达式(< (car lis) k)
,(display (car lis))
,else
和(display (cdr lis))
。但是,它遇到了几个问题。 if
不能被评估为true或false,因为它是语法。即使可能,也会出现misplaced aux keyword else
错误。如果没有发生,它会 {/ em> (display (car lis))
和(display (cdr lis))
(这不是你想要的。
我猜你实际上并不想使用display
。如果您在终端中以交互方式运行此程序,Scheme将评估您的功能结果并为您打印。
*
略有简化。查看TSPL4了解详情。