Попробуйте ormap
и andmap
(ormap values (list #t #t #f))
(andmap values (list #t #t #f))
, где values
по сути является функцией идентификации в этом контексте .
Причина, по которой (apply and (list #t #t #f))
не работает, заключается в том, что and
не является функцией. Это макрос, который необходим, потому что (and #f (error 'foo))
должен закоротить (оценивается как #f
). Если бы это была функция, это привело бы к ошибке.