Я замечаю, что эти два определения не могут быть найдены в самом официальном ресурсе документации Haskell:
(:) :: a -> [a] -> [a]
data [] a = [] | a : []
Я проверил Hoogle и нет записей для data []
или (:)
. Эти две не должны быть "нормальной" функцией и типом данных?
Изменить. В Haskell 2010 Language Report говорится, что
-- The (:) operator is built-in syntax, and cannot legally be given
-- a fixity declaration; but its fixity is given by:
-- infixr 5 :
Но почему? Есть ли особая причина для выделения этой функции?