foldl': Don't be strict in initial accumulator
Use TypeLits for clean unrolling notation