Implementeu la funció aplicacio-condicional, una funció que té dues funcions com a paràmetres, f i condicio. f és una funció que pren dos arguments, i condicio és una funció-predicat que acceptarà un sol argument i retornarà true o false.
|sí ---> retorna gr
fr(x) --és cert (condicio x)?---|
|no ---> Ignorem x i retornem fr
|sí ---> retorna (f x y)
gr(y) --és cert (condicio y)?---|
|no ---> Ignorem y i retornem gr
Així, podem passar tants arguments com calgui fins que n’hi hagi dos que satisfan condicio. Obviament el darrer argument que fem servir cal que satisfaci la condició; en altre cas intentaria aplicar un nombre com si fos una funció.
Input
(def suma-si-parell (aplicacio-condicional + even?)) ((suma-si-parell 2) 4) (((((suma-si-parell 2) 3) 5) 7) 6)
Output
#'user/suma-si-parell 6 8