ヒントで
ormap表現:。
(define (in-chars? c chars)
(ormap (lambda (ch) (equal? c ch)) (string->list chars)))
は
に
(memv c (string->list chars))
ザ・IF-epressionのように記述することができますあなたの関数が小さく、ポイントにしているので、私はあまり変化しないが
(define (match pattern text)
(define remainders (pattern text))
(if (not (set-empty? remainders))
(substring text 0 (- (string-length text)
(string-length (argmin string-length
(set->list remainders)))))
#f))
は
(and (not (set-empty? remainders))
(substring ...)
のように記述することができます。
文字列を操作するためのより便利な構文を使用すると、 文字列操作プログラムの読み書きが簡単になります。数年前、私は試みを行い、concatマクロを書きました。
私はそれを使ってNorvigのスペルチェッカーを実装しました(彼のオリジナルの記事はあなたに興味のあるかもしれません)。結果のスペルチェックと、連結マクロがここ
http://blog.scheme.dk/2007/04/writing-spelling-corrector-in-plt.html
アップデートを説明している:私はスペルチェッカーの更新バージョンを書かれています。 concatマクロは簡単な文字列操作を短縮します。
https://github.com/soegaard/this-and-that/blob/master/spell-checker.rkt
この質問はこの質問がCode Reviewのためのより良いフィットするだろうコードレビュー –
に適しているようですか? –