--auxiliary functions: MAIN x = x --main goal SCC _ x = x --set cost center data Nat = Z | S Nat length2 [] = Z length2 (_:xs) = S (length2 xs) append [] ys = ys append (x:xs) ys = x:(append xs ys) foo1 xs ys = SCC 1 (length2 (append xs ys)) foo2 xs ys = SCC 2 (lenapp xs ys) lenapp [] [] = Z lenapp [] (_:xs) = S (lenapp2 xs) lenapp (_:xs) y = S (lenapp xs y) lenapp2 [] = Z lenapp2 (_:xs) = S (lenapp2 xs) g1 = MAIN (foo1 [0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9] []) --g2 = MAIN (foo2 [0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9] []) --to compute runtimes: benchmark1 = foo1 [1..200000] [1..1000] benchmark2 = foo2 [1..200000] [1..1000]