Что означают (x: _) и [x: _]?

head' :: [a] -> a
head' [] = error "No head for empty lists!"
head' (x:_) = x

head' :: [a] -> a
head' xs = case xs of [] -> error "No head for empty lists!"
                      (x:_) -> x

Я задаю довольно простой вопрос, которого я не понимаю. В приведенном выше коде я вижу, что для ввода требуется список. Но в третьей строке написано (x: _) , что меня смущает. Может ли кто-нибудь объяснить мне, почему они написали (x: _) вместо [x: _] ?

И, кроме того, я не понимаю, что (x : _) означает.

Спасибо.

5
задан Petr Pudlák 24 July 2016 в 15:50
поделиться