```haskell f : {A : Type} -> List A -> Pair (List A) Nat; f := go(acc1 := []; acc2 := 0)@\{ [] := (acc1, acc2) | (x :: xs) := go (x :: acc1) (acc2 + 1) xs }; ```