czwartek, 1 lutego 2018

Funkcja na liście - Standard ML

Treść zadania:

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