1  ; exercise chapter 3
  2  ; little lisper
  3  ; july 24 2005
  4
  5  ;=============================================================================
  6  ; seconds
  7  ;=============================================================================
  8  (defun seconds (list)
  9    (cond
 10     ((null list) (quote()))
 11     (t (cons (car (cdr (car list))) (doubles (cdr list))))
 12    )
 13  )
 14
 15  (seconds (list (list 'paella 'spanish) (list 'wine 'red) (list 'and 'beans)))
 16
 17  ;=============================================================================
 18  ; dupla
 19  ;=============================================================================
 20  (defun dupla (word list)
 21    (cond
 22     ((null list) (quote()))
 23     (t (cons word (dupla word (cdr list))))
 24    )
 25  )
 26
 27  (dupla 'hot (list 'a 'b 'c 'd))
 28  (dupla 'hot ())
 29
 30  ;=============================================================================
 31  ; double
 32  ;=============================================================================
 33  (defun double (word list)
 34    (cond
 35     ((null list) (quote()))
 36     ((eq word (car list)) (cons word list))
 37     (t (cons (car list) (double word (cdr list))))
 38    )
 39  )
 40
 41  (double 'chili (list 'texas 'hot 'chili))
 42  (double 'chili (list 'chili 'texas' hot))
 43
 44  ;=============================================================================
 45  ; subst-sauce
 46  ;=============================================================================
 47  (defun subst-sauce (word list)
 48    (cond
 49     ((null list) (quote()))
 50     ((eq 'sauce (car list)) (cons word (cdr list)))
 51     (t (cons (car list) (subst-sauce word (cdr list))))
 52    )
 53  )
 54
 55  (subst-sauce 'chili (list 'texas 'hot 'chili))
 56  (subst-sauce 'chili (list 'soy 'sauce 'and 'tomato 'sauce))
 57
 58  ;=============================================================================
 59  ; subst3
 60  ;=============================================================================
 61  (defun subst3 (new word1 word2 word3 list)
 62    (cond
 63     ((null list) (quote()))
 64     ; if any of these conditions are true
 65     ((or (eq word1 (car list)) (or (eq word2 (car list)) (eq word3 (car list))))
 66      (cons new (cdr list)))
 67     (t (cons (car list) (subst3 new word1 word2 word3 (cdr list))))
 68    )
 69  )
 70
 71  (subst3 'soy 'chili 'hot 'sauce (list 'soy 'sauce 'and 'tomate 'sauce))
 72  (subst3 'sauce 'chili 'hot 'spicy (list 'texas 'hot 'chili))
 73  (subst3 'spicy 'chili 'hot 'soy '())
 74
 75  ;=============================================================================
 76  ; substN -very fun!
 77  ;=============================================================================
 78
 79  (defun substN (new slat lat)
 80    (cond
 81     ((null slat) (quote()))
 82     ((null lat) (quote()))
 83     ((eq (car lat) (car slat)) (cons new (cdr lat)))
 84     ((null (cdr slat)) (cons (car lat) (substN new slat (cdr lat))))
 85     (t (substN new (cdr slat) lat))
 86   )
 87  )
 88
 89  (substN 'hot (list 'cincinnati 'chili) (list 'texas 'hot 'chili))
 90  (substN 'sauce (list 'cincinnati 'chili) (list 'soy 'sauce 'and 'tomato 'sauce))
 91  (substN 'shit (list 'soy 'sauce 'and 'tomato 'sauce) (list 'texas 'hot 'sauce))
 92  (substN 'sauce (list 'cincinnati 'chili) ())
 93
 94  ;=============================================================================
 95  ; rember2
 96  ;=============================================================================
 97
 98  ; needs rember first
 99  (defun rember (word list)
100    (cond
101     ((null list) (quote()))
102     ((eq word (car list)) (cdr list))
103     (t (cons (car list) (rember word (cdr list))))
104    )
105  )
106
107  (defun rember2 (word list)
108    (cond
109     ((null list) (quote ()))
110     ((eq word (car list)) (cons word (rember word (cdr list))))
111     (t (cons (car list) (rember2 word (cdr list))))
112    )
113  )
114
115  (rember2 'chili (list 'cincinati 'chili))
116  (rember2 'sauce (list 'soy 'sauce 'and 'tomato 'sauce 'more 'sauce))
117  (rember2 'sauce ())