Repeat определяется следующим образом:
repeat :: a -> [a]
repeat x = xs where xs = x:xs
Есть ли причина, по которой следующие не используются?
repeat :: a -> [a]
repeat x = x : repeat x
(Очевидно, что для многих функций Prelude существует много эквивалентных определений, но мое последнее описание кажется гораздо более очевидным. Интересно, есть ли причина производительности или стиля для того, как это делается.)