Solution (source code)

= Solution

<List concatenation> copies the spine of its first operand and shares the second:

``
(++) :: [a] -> [a] -> [a]
[]     ++ ys = ys
(x:xs) ++ ys = x : (xs ++ ys)
``

For finite first-operand length $m$, fully producing the copied spine costs \b[$\Theta(m+1)$], independently of the second-operand length. With <lazy evaluation>, requesting only the first few result constructors can cost less; the bound concerns the complete concatenation spine, without forcing its element values or traversing the already existing second operand.