Проверьте запуском
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 домен |
Частая ошибка
Общие трансцендентные функции и неконечные значения отсутствуют.
Куда дальше
Правила точности и заражения за этими сигнатурами разобраны в руководстве, а место семейства среди остальных показывает указатель.