; Is there chili in the hot potatoes? (nested intersection)
; ------------------------------
; The Little Lisper 3rd Edition
; Chapter 6
; Exercise 2
; Common Lisp
; http://t...content-available-to-author-only...r.com/thelittlelisper
; http://t...content-available-to-author-only...t.com/2010/06/little-lisper-chapter-6-oh-my-gawd-its.html
; http://t...content-available-to-author-only...t.com/2010/06/little-lisper.html
; ------------------------------
(setf l1 '((fried potatoes)(baked (fried)) tomatoes))
(setf l2 '(((chili) chili (chili))))
(setf l3 '())
(setf lat1 '(chili and hot))
(setf lat2 '(baked fried))
(setf a 'fried)
; ------------------------------
(defun add1 (n)
(cond
((null n) '())
((+ n 1))))
(print (add1 1))
(defun notatom (lat)
(not (atom lat)))
(defun occurNa* (a1 lat)
(cond
((null lat) 0)
((null a1) 0)
(t (cond
((notatom (car lat))
(+ (occurNa* a1 (car lat))
(occurNa* a1 (cdr lat))))
((eq (car lat) a1)
(add1 (occurNa* a1 (cdr lat))))
(t (occurNa* a1 (cdr lat)))))))
(print (occurNa* 'c (list 'a 'b 'c)))
(print (occurNa* 'bananas '(((bananas))(bananas))))
(defun occurN* (alat lat)
(cond
((null alat) 0)
((null lat) 0)
((notatom (car alat))
(+ (occurN* (car alat) lat)
(occurN* (cdr alat) lat)))
(t (+ (occurNa* (car alat) lat)
(occurN* (cdr alat) lat)))))
(print (occurN* '(baked fried) '((fried potatoes)(baked (fried)) tomatoes)))
; 3
(print (occurN* lat1 l2))
;3
(print (occurN* lat2 l1))
;3
(print (occurN* lat1 l3))
;0