【问题标题】:Using char-set in Scheme在 Scheme 中使用字符集
【发布时间】:2016-04-07 18:44:58
【问题描述】:

此函数必须在给定列表中找到!"#%&'()*,-./:;?@[\]_{} 字符。如果至少一次找到任何这些字符,则它必须返回 true。但我找不到合适的预定义函数。

(define (is-symbol lst)
  (if (null? (car lst))
  #f
  (if (char-set:punctuation (car lst)) #t
           (is-symbol (cdr lst)))
  ))

(is-symbol '(#\A #\b #\t #\R #\f 3 5 4 7 8 9 #\A #\G #\w #\q $ & ?))

【问题讨论】:

  • 欢迎来到 Stack Overflow,我将您的问题文本拉到代码 sn-p 上方,以使问题更易于阅读 - 这是一种称为底线在前的技术。有一个great article about how to write good questions,请考虑阅读并编辑您的问题,以便更清楚地了解您想要什么。

标签: list function scheme character punctuation


【解决方案1】:

相信你在找char-punctuation?

(define (is-symbol? lst)
  (cond ((null? lst) #f)
        ((char-punctuation? (car lst)) #t)
        (else (is-symbol (cdr lst)))))

甚至更简单:

(define (is-symbol? lst)
  (ormap char-punctuation? lst))

【讨论】:

  • 我在高级学生语言模式下使用 DrRacket。它给出了这个错误:char-punctuation? : 这个函数没有定义
  • 然后更改语言,使用 #racket 。否则,您必须自己实施该过程。
【解决方案2】:

您正在使用char-set:punctuation,它看起来像 SRFI-14。对应的隶属谓词是char-set-contains?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-13
    • 2011-03-13
    • 1970-01-01
    • 2010-12-08
    • 2013-10-23
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多