Проверьте запуском
LISPEX
(call-with-values (lambda () (exact-integer-sqrt 20)) list)Наблюдаемый результат
OUTPUT
(4 4)Как рассуждать
+ - * /вариативны по контракту; сравнения требуют минимум два аргумента; целочисленные операции отвергают нецелые.floor/иtruncate/возвращают частное и остаток двумя значениями.exptпринимает точный целый показатель;exact-integer-sqrtвозвращает корень и остаток.
Числовые сигнатуры
| Сигнатура | Результат | Граница ошибки |
|---|---|---|
| (+ number ...) / (* number ...) | число; точное без неточных операндов | E312 тип; E314 не конечное |
| (/ number number ...) | точное рациональное или конечное вещественное | E313 нулевой делитель; E314 не конечное |
| (floor/ integer integer) | два значения: частное, остаток | E312 нецелое; E313 нулевой делитель |
| (expt number exact-integer) | число с точностью основания | E313 точный ноль в отрицательной степени; E314 непредставимо |
| (exact-integer-sqrt точное неотрицательное целое) | два точных значения: корень, остаток | E312 домен |
Частая ошибка
Общие трансцендентные функции и не конечные значения отсутствуют.
Куда дальше
Держите эту страницу рядом при написании кода. За последовательным объяснением вернитесь к карте синтаксиса или соответствующей главе.