reduced code duplication in recipes-by-ingredients and contains-ingredients?

This commit is contained in:
Christoffer Müller Madsen 2017-04-05 13:28:32 +02:00
parent ba43937232
commit ba8dc20964

View File

@ -43,8 +43,7 @@
(define contains-ingredient?
(lambda (recipe search-ingredient)
(let ((ingredients (ingredients recipe)))
(ingredient-by-name ingredients search-ingredient))))
(contains-ingredients? recipe (cons search-ingredient '()))))
(define contains-ingredients?
(lambda (recipe search-ingredients)
@ -58,17 +57,20 @@
)))
(define recipes-by-ingredients
(lambda (recipes search-ingredients)
(recipes-by-ingredients-rec recipes search-ingredients '())))
(define recipes-by-ingredients-rec
(lambda (recipes search-ingredients list)
(if (null? recipes)
list
(let* ((recipe (car recipes))
(ingredients (ingredients recipe))
(contains? (contains-ingredients? recipe
search-ingredients)))
(if contains?
(recipes-by-ingredients (cdr recipes)
search-ingredients))
(new-list (if contains?
(cons recipe list)
list)))
(recipes-by-ingredients-rec (cdr recipes)
search-ingredients
(cons recipe list))
(recipes-by-ingredients (cdr recipes)
search-ingredients
list))))))
new-list)))))