ANSI Common Lisp имеет bignum
, который может использоваться для представления произвольно больших чисел, если у вас достаточно места, но он не указывает значение "бесконечность".Некоторые реализации могут, но это не является частью стандарта.
В вашем случае, я думаю, вам нужно переосмыслить свой подход, исходя из цели вашей функции: найти наибольшее числов списке.Попытка найти наибольшее число в пустом списке недопустима / бессмысленна, так что вы хотите указать этот случай.Таким образом, вы можете определить предварительное условие и, если оно не выполнено, вернуть nil
или вызвать ошибку.Именно это и делает встроенная функция max
.
(apply #'max '(1 2 3 4)) => 4
(apply #'max nil) => error
РЕДАКТИРОВАТЬ: Как указал Райнер Йосвиг, Common Lisp не позволяет произвольно длинные списки аргументов , поэтому лучше использовать reduce
вместо apply
.
(reduce #'max '(1 2 3 4))