为什么这些ormap和for /或函数会出错?

时间:2019-06-11 11:46:35

标签: functional-programming racket

我试图找出字符串中是否有任何字符不是可打印字符Array<GameObject>。我尝试了2个函数,其中一个使用(integer value > 127),另一个使用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"))

问题出在哪里,如何解决?感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

不同于其他语言,其中>是运算符的名称,在球拍>中是常规函数的名称。要比较两个数字,请写(< a b),这是使用<的标准方法。

对于喜欢中缀符号的人,Racket还提供了一种不常用的语法:

(a . < . b)

将被读者转化为

(< a b)