Почему эти функции ormap и for/or дают ошибку?

Я пытаюсь выяснить, не является ли какой-либо из символов в строке печатным символом (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...:

Где проблема и как ее можно решить? Спасибо за вашу помощь.

Введение в одну из самых важных концепций в React - функциональное программирование
Введение в одну из самых важных концепций в React - функциональное программирование
React разработан с использованием концепции функционального программирования, поэтому понимание функционального программирования важно для изучения...
Фото ️🔁 Radek Jedynak 🔃 on ️🔁 Unsplash 🔃
Фото ️🔁 Radek Jedynak 🔃 on ️🔁 Unsplash 🔃
Что такое Java 8 Streams API? Java 8 Stream API
2
0
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Для тех, кто любит инфиксную нотацию, Racket также предоставляет редко используемый синтаксис:

(a . < . b)

который читатель превратит в

(< a b)

Другие вопросы по теме