cond
принимает выражения в виде *
(condition expr1 expr2 ... result)
Так как вы дали
(if (< (car lis) k) (display (car lis)) else (display (cdr lis)))
Схема попытается определить, истинно ли if
, и затем запустит следующие четыре выражения (< (car lis) k)
, (display (car lis))
, else
и (display (cdr lis))
. Это сталкивается с парой проблем, хотя. if
не может быть оценено как истина или ложь, так как это синтаксис. Даже если бы это могло быть, вы получите ошибку misplaced aux keyword else
. И если этого не произойдет, то будет и (display (car lis))
, и (display (cdr lis))
(а это не то, что вы хотите.
Я предполагаю, что вы на самом деле не хотите использовать display
. Если вы выполняете это интерактивно в терминале, Scheme оценит результат вашей функции и распечатает его для вас.
*
небольшое упрощение. Подробнее смотрите в TSPL4 .