在 Scheme 中使用字符集
Using char-set in Scheme
此函数必须在给定列表中找到 !"#%&'()*,-./:;?@[\]_{}
个字符。如果这些字符至少被找到一次,那么它必须 return 为真。但是我找不到适合这个目标的预定义函数。
(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 $ & ?))
我相信你正在寻找 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))
您正在使用 char-set:punctuation
,它看起来像 SRFI-14。对应的成员谓词是char-set-contains?
.
此函数必须在给定列表中找到 !"#%&'()*,-./:;?@[\]_{}
个字符。如果这些字符至少被找到一次,那么它必须 return 为真。但是我找不到适合这个目标的预定义函数。
(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 $ & ?))
我相信你正在寻找 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))
您正在使用 char-set:punctuation
,它看起来像 SRFI-14。对应的成员谓词是char-set-contains?
.