partial function

以下のような関数、looking関数が9章にて出てくる。

(define pick
  (lambda (n lat)
    (cond
     ((= n 1) (car lat))
     (else (pick (- n 1) (cdr lat))))))

(define keep-looking
  (lambda (a sorn lat)
    (cond
     ((number? sorn) (keep-looking a (pick sorn lat) lat))
     (else (eq? sorn a)))))

(define looking
  (lambda (a lat)
    (keep-looking a (pick 1 lat) lat)))

これは、アトムからなるリストlatの中にアトムaが存在するかどうか調べる関数。
だけど、その調べ方がちょっと変わってる。
以下のような感じ。

  • latの要素eを見て、それが数値ならlatのe番目の要素を見る。
  • さもなくば、eがアトムaと等しいかを否かを返す

eは(car lat)から始める。


実行結果は

gosh> (looking 'caviar '(6 2 4 caviar 5 7 3))
#t
gosh> (looking 'caviar '(6 2 grits caviar 5 7 3))
#f

うむ。caviarは両方のlatにあるけど、前者のみ#tを返す。


んで、この関数、永遠に終了しない場合がある。
例えば、

(looking 'caviar '(7 1 2 caviar 5 6 3))

は評価すると再帰が止まらない。


このような関数をpartial functionというらしい。
直訳すると部分関数?
このように、名前を付けるということは、そういった特徴をもつ関数を一まとまりにして論じたい場面が出てくるからなのだろうけど、いまいち"partial function"なるものが何のための概念なのか理解できない。
まぁ、読み進めるうちに分かるのかな...。


151ページのMr.LeftcolumnとMr.Rightcolumnのやりとりうち、6個目の意味がわからん。
簡単な英単語ばかりなのに...。
Leftcolumn氏は何を尋ねて、Rightcolumn氏は何を伝えたいのか?

What do you think the functions we have seen so far are called?

のthe functionsって何を指してんのよ?
この1文は何を聞きたいのか?

They are called total.

のtotalって何よ?


あー、中学英語からやり直しな悪寒。