Я пытаюсь выяснить, не является ли какой-либо из символов в строке печатным символом (integer value > 127). Я попробовал 2 функции, одну с ormap и другую с for/or, но обе не работают:
(define (isBinary line)
(for/or ([ch line])
((char->integer ch) > 127)))
(define (isBinary2 line)
(ormap (lambda (ch) ((char->integer ch) > 127)) (string->list line)))
(displayln (isBinary "abcd1234"))
(displayln (isBinary2 "abcd1234"))
Оба дают одну и ту же ошибку:
application: not a procedure;
expected a procedure that can be applied to arguments
given: 97
arguments...:
Где проблема и как ее можно решить? Спасибо за вашу помощь.


В отличие от других языков, где > — это имя оператора, в Racket > — это имя обычной функции. Чтобы сравнить два числа, напишите (< a b), что является стандартным способом использования <.
Для тех, кто любит инфиксную нотацию, Racket также предоставляет редко используемый синтаксис:
(a . < . b)
который читатель превратит в
(< a b)