2016-04-07 12 views
0

この関数は、指定されたリスト内で!"#%&'()*,-./:;[email protected][\]_{}文字を検索する必要があります。これらの文字が少なくとも1回検出された場合は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

ようこそスタックオーバーフローへようこそ、あなたの質問のテキストをコードスニペットの上に引っ張って読みやすくしました。これは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))))) 

あるいはさらに簡単:あなたはSRFI-14のように見えるchar-set:punctuationを、使用している

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

DrRacketをAdvance Student languageモードで使用します。それはこのエラーを与える:char-punctuation? :この関数は定義されていません –

+0

言語を変更してから#rackを使用してください。それ以外の場合は、手続きを自分で実装する必要があります。 –

0

。対応するメンバーシップ述語はchar-set-contains?です。

関連する問題