(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

EmacsでGauche使ってるんだけど、Scheme手習い読んでて今更気づいたこと。

僕が初めてSchemeに出会ってから早いもので1ヶ月が経ちました。
まだ色々と未熟です。

少しづつ少しづつ勉強して、理解を深めているので自然と時間がかかってしまう。。

まぁそんなこんなで今日はScheme手習いからlat?の問題。

lat?とは本の中ではリストの中が全てatomかどうかを判断する関数ですね。
さくっと書いてみます。

(define lat?
    (lamda (l)
        (cond
          ((null? l) #t)
          ((atom? (car l)) (lat? (cdr l)))
          (else #f))))

よく分からないから何度も同じとこを呼んでるうちに覚えてしまった。。。
それはいいとして、この中に登場するatom?なんだけど本に書いてある通り写したのになんでかエラーになるからおかしいなぁと思ったら、atom?さんがエラーだしてました。
Gaucheatom?ってデフォルトでないの?というか、なんでそんなものが手習いに載ってるの?
まぁいいけど、、、

とりあえず、atom?を定義してやる。

(define atom?
    (lambda (x)
        (and (not (pair? x)) (not (null? x)))))

これがないと全力でエラッた。手習いひどいです('A`)
まぁこれで僕は夜も寝ることができますけどね♪

Scheme手習い

Scheme手習い