It is said that the Haskell seq function forces the evaluation of its first argument and returns the second. It is used to add strictness to evaluation of expressions. So how can the following simply return 5:
seq [1..] 5
Shouldn't it get stuck in trying to construct an infinite list?