fun napp (x,y)  =
if x = [] then y
else hd(x) :: napp (tl(x),y)
;;

fun nrev x =
if x = [] then []
else napp( nrev(tl(x)), [hd(x)] )
;;

print "Starting benchmark run of naive reverse";

fun nlst n =
if n = 0 then []
else n :: nlst ( n - 1 )
;;

fun iter (n, f, a) =
if n = 0 then ()
else let val x = f( a )
     in iter( n-1, f, a )
     end
;;

print "Starting benchmark run of naive reverse"
;;

iter ( 10, nrev, nlst( 100 ) )
;;

print "Benchmark done"
;;
