rev L == rr L [] rr (a:b) L == rr b (a:L) rr [] L == L max [a] == a max (a:b) == a <| a > maxb |> maxb where { maxb == max b } ntozero n [] vv == [] ntozero n (a:b) (v:vv) == v: tozero b vv <| a = n |> ntozero n b vv tozero [] vv == [] tozero (0:b) vv == [] tozero (a:b) (v:vv) == v : tozero b vv valgo L == vg (rev L) [] vg (n:nn) [] == vg nn [n] vg (n:nn) (v:vv) == vg nn (x:v:vv) where { x == n+v <| n+v > 0 |> 0 } vg [] vv == vv L1 == [ 3, -4, 1, -4, 2, 1, 3, 4, -2, 1, -2, 5, -7, -3, 3 ] mscs L == ntozero (max vals) vals L where { vals == valgo L }