the prelude implementation is foldMap on list. as i understand it, a cons cell will be created with the head pointer pointing at 1, and the tail at a lazily evaluated thunk. + tries to evaluate, which creates a cons cell pointing at 2, and a thunk. 1 and 2 are added. so we&#x27;ve got two cells hanging around, but no references to the first one, so the gc can grab it whenever. it&#x27;ll just kind of chug through the list.<p>it&#x27;s kinda wasteful to keep making the cells, but it&#x27;s easy to read. <i>shrug</i><p>however ghc is very smart. it might be clever enough to optimize away the cells. it might also do immediate ints, rather than pointers to &#x27;1&#x27;, i&#x27;m pretty hazy on when there&#x27;s an int, and when there&#x27;s a bigint.