En Haskell tenim una funció until que, donat un predicat , una funció i un valor inicial , va aplicant la funció tal que fins que es satisfa el predicat. Per exemple:
(until #(> % 100) #(* 2 %) 1)
té com a resultat 128.
Implementeu la funció until1 en Clojure utilitzant el recur.
Implementeu la funció until2 en Clojure amb funcions d’ordre superior.
Implementeu l’algorisme d’Euclides en forma de funció mcd per calcular el màxim comú divisor utilitzant una de les funcions until.
Entrada: a, b
1. Si a=b, mcd=a, fi.
2. Si a>b, canvi de a per a-b, anar a 1.
3. Si a<b, canvi de b per b-a, anar a 1.Input
(until1 #(> % 100) #(* 2 %) 1)
Output
128
Input
(until2 #(> % 100) #(* 2 %) 1)
Output
128
Input
(mcd 14 8)
Output
2