I was looking for the definition of seq
and came across this weirdness. Why do all these functions have the same/similar definitions?
seq :: a -> b -> b
seq = let x = x in x
inline :: a -> a
inline = let x = x in x
lazy :: a -> a
lazy = let x = x in x
There are many more with this definition in the source code. What's going on?