;; Predicates (define title (lambda (recipe) (car (recipe)))) (define ingredients (lambda (recipe) (car (cdr recipe)))) (define steps (lambda (recipe) (car (cdr (cdr recipe))))) (define ingredient-name (lambda (ingredient) (if (= (length ingredient) 2) (car (cdr ingredient)) (car (cddr ingredient))))) (define ingredient-amount (lambda (ingredient) (car ingredient))) ;; (define ingredient-ref (lambda (ingredients n) (if (= n 0) (car ingredients) (ingredient-ref (cdr ingredients) (- n 1))))) (define ingredient-by-name (lambda (ingredients search-name) (let ((ingredient (car ingredients))) (cond [(equal? (ingredient-name ingredient) search-name) ingredient] [(null? (cdr ingredients)) #f] [else (ingredient-by-name (cdr ingredients) search-name)])))) (define contains-ingredient? (lambda (recipe ingredient) (let ((ingredients (ingredients recipe))) (ingredient-by-name ingredients ingredient))))