2016-04-07 6 views
0

Эта функция должна содержать !"#%&'()*,-./:;[email protected][\]_{} символов в данном списке. Если какие-либо эти символы найдены хотя бы один раз, тогда он должен вернуть true. Но я не могу найти надлежащую предопределенную функцию для этой цели.Использование char-set в схеме

(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 $ & ?)) 
+0

Добро пожаловать в Stack Overflow, я вытащил текст вашего вопроса над фрагментом кода, чтобы упростить чтение вопроса - это метод под названием Bottom Line Up Front. Существует [замечательная статья о том, как писать хорошие вопросы] (http://stackoverflow.com/help/how-to-ask), пожалуйста, подумайте над тем, чтобы прочитать ее и изменить свой вопрос, чтобы уточнить, что вы хотите. –

ответ

0

Я считаю, что вы ищете 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)) 
+0

Я использую DrRacket в режиме Advance Student. Он дает эту ошибку: char-punctuation? : эта функция не определена –

+0

Измените язык, используйте #racket. В противном случае вам придется выполнить процедуру самостоятельно. –

0

Вы используете char-set:punctuation, который выглядит как SRFI-14. Соответствующий предикат членства - char-set-contains?.

Смежные вопросы