Я искал определение seq
и наткнулся на эту странность. Почему все эти функции имеют одинаковые / похожие определения?
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
В исходном коде есть еще много других с этим определением. Что происходит?