IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

Scheme っぽい書き方勉強 1

ちょっと息抜きに Scheme の勉強。人のコード読み

文字列に a という文字が含まれるか

(define (has-a? string i)
        (and (>= i 0)
             (or (eqv? (string-ref string i) #\a)
                 (has-a? string (- i 1)))))

(has-a? "hoge" 3) ; => #f
(has-a? "fuga" 3) ; => #t

(define a "hoga")
(has-a? a (- (string-length a) 1)) ; => #t

JS に直すと

function has_a(string, i) {
  return i >= 0 && (string[i] == "a" || has_a(string, i - 1));
}

なるほどー。
やはり、文化が違うと書き方が違うなあ。
再帰再帰で頭が><