(********* Exercice 1 *********) import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.function.Consumer; import java.util.function.Predicate; class Client { public final String first_name; public final String last_name; public double size; public Client(String f, String l, double h) { first_name = f; last_name = l; size = h; } public String toString() { return first_name + last_name + " (" + size + ")"; } public void increase() { System.out.print("grows"); size *= 2; } public void roar() { if (size <= 5) System.out.print("mews"); else if(size <= 10) System.out.print("roars"); else System.out.print("*thunders*"); } } class Test { static Predicate andAll(List> lp) { } static Consumer doAll(List> lc) { } public static void main(String[] args) { List clients = Arrays.asList( new Client("Allo", "Saurus", 8.5), new Client("Diplo", "Docus", 27), new Client("Draco", "Rex", 3), new Client("Mono", "Clonius", 5), new Client("Toy", "Sarus", 9.3) ); } } (********* Exercice 2 *********) type ratio = { num : int; denum : int};; let x = {num = 7; denum = 3 };; x.num;; (* int = 7 *) def new_complex(x,y): def anon(*args): if (not args): # return if args is the empty list return mess = args[0] if (mess == "show"): return (x,y) else: ox = args[1][0]; oy = args[1][1] if (mess == "add"): return new_complex(x+ox, y+oy) elif (mess == "mul"): return new_complex(x*ox-y*oy, x*oy+y*ox) return anon c1 = new_complex(1,1) c2 = c1("add", (1,1)) c3 = c2("mul", (2,2)) print(c3("show")) (********* Exercice 3 *********)