В нем говорится, что если in
само по себе оценивается как #true
, то выражение должно оцениваться до 10
. Это отличается от «если условное (в if
) оценивается как #true
, тогда выражение должно оцениваться до 10
», что, как я понимаю, является вашей текущей (но неверной) интерпретацией.
Например:
(define in #true)
<your expression>
<your expression>
следует оценить до 10
(define in #false)
<your expression>
<your expression>
следует оценить до 20
(define in 23)
<your expression>
<your expression>
должно быть равно 22
(поскольку in
- это число, которое не является ни 0, ни отрицательным).
(define in "hello")
<your expression>
<your expression>
следует оценить до 5
(длина "hello"
).
и т. Д.
Также обратите внимание, что когда in
оценивается как неположительное число, в упражнении не описывается, что именно <your expression>
должно оценить, но оно говорит, что оно должно быть положительным. Ваш текущий код («оставьте номер как есть») неверен, потому что результат не будет положительным.
Убедитесь, что вы подробно прочитали раздел 1.7. Вам нужно будет использовать boolean?
, number?
, string?
, image?
, string-length
и другие. Вы также можете найти cond
(введено в "Пролог: как программировать") более удобным для использования, чем набор if
s.