Zadeklarować funkcję nest: (int → int) * int list → int określoną następująco:
nest(f, []) = 0
nest(f,[a]) = f(a,0)
nest(f,[a1,a2, ... ,an]) = f(a1,f(a2(...(an,0)...)
Przykład:
nest(f,[])=0
nest(f,[a])=f(a,0)
nest(f,[a,b])=f(a,f(b,0)
nest(f,[a,b,c])=f(a,f(b,(f(c,0)))
Kod źródłowy:
fun nest(f:int*int -> int ,x) = if null(x) then 0 else f(hd(x),nest(f,tl(x)));
Dla potrzeb testów deklaruję funkcję f która przyjmuje dwa argumenty i zwraca ich sumę
fun f(x,y) = x+y;
Przypadki testowe:
nest(f,[]); nest(f,[1]); nest(f,[1,2]); nest(f,[1,2,3]); nest(f,[1,2,3,4]); nest(f,[1,2,3,4,5]);
Brak komentarzy:
Prześlij komentarz