{-# LANGUAGE OverloadedStrings #-} main :: IO () main = do let a = 1:2:3:[] let b = a pure $ seq b () -- At this point is a still 1:2:3:[] or is a [1,2]:3:[]