連想リストを操作する関数を作ってみた

Java でいう HashMap みたいなものが欲しいなと思って
連想リストとかいうものを作ってみた。

なんだか SRFI-69 とやらで定義されているみたいなので
車輪の再発明をしただけ感満載。
Gosh で動かせます。

;; Key-value 形式リストからデータを取得する
;; #?=(memo-pick-value '(0 1) '(((0 1) #t) ((0 2) #f)))
;;     >>  #t
(define memo-pick-value
  (lambda (key lat)
    (cond
      ((null? lat) '())
      ((equal? key (caar lat)) (cadar lat))
      (else
        (memo-pick-value key (cdr lat))))))

;; Key-value 形式リストにデータを追加する
;; #?=(memo-push-value '(((0 1) #t) ((0 2) #f)) '((0 3) #f))
;;     >>  (((0 1) #t) ((0 2) #f) ((0 3) #f))
(define memo-push-value
  (lambda (lat value)
    (cond
      ((null? lat) (cons value '()))
      (else
        (cons (car lat) (memo-push-value (cdr lat) value))))))