読書会メモ

今日は 1h 縛りでした。申し訳ない。最初らへんは図形言語を使って画像を出力するには、な検討でしたが openGL ではなく単に画像ファイルとして出力すれば良いのでは? というラディカルな答えを出してきた相方の指導が入った件。
以下に TODO というかメモを列挙。

  • 図形描画は一旦パス
  • シンボルについて
    • 別途調べます
  • () と '() の違い
    • 別途調べます
  • eq? と eqv? と equal? について
    • 別途 R5RS なソレを (ry
  • 問題 2.54 について、昔の解答確認してみたらダメダメだった件orz

問題 2.54

問題の文章をそのまま手続きにしてみるか。

(define (equal? a b)
  (cond ((and (pair? a) (pair? b)) (if (equal? (car a) (car b))
				       (equal? (cdr a) (cdr b))
				       #f))
        ((and (symbol? a) (symbol? b)) (eq? a b))
	(else #f)))

これでもまだ sw@mac の中の人の実装よりはダサい。てか上記の手続きは試験してないので正常動作の担保はゼロです。

てか

        ((and (symbol? a) (symbol? b)) (eq? a b))

は無いな。やはり結局こうなるのか。

(define (equal? a b)
  (if (and (pair? a) (pair? b))
      (if (equal? (car a) (car b))
	  (equal? (cdr a) (cdr b))
	  #f)
      (eq? a b)))

最初は違和感あるって言っちゃいましたが、この方が断然良い。でももう少しなんとかならんかな、な感触もあったりしますが多分無理。あ、こうしたらもう少し短くなる?

(define (equal? a b)
  (if (and (pair? a) (pair? b))
      (and (equal? (car a) (car b))
	   (equal? (cdr a) (cdr b)))
      (eq? a b)))

わははは的 (何