Это означает, что вы можете сопоставить шаблон, содержащий другой шаблон. В вашем примере шаблон (x, y)
содержится внутри большего шаблона ((x, y), z)
. Вложенность может быть сколь угодно глубокой, например все следующие являются законными:
f ((x2,x0),x1) = ()
f' (((x3, x2),x0),x1) = ()
f'' ((((x4,x3), x2),x0),x1) = ()
f''' (((((x5,x4),x3), x2),x0),x1) = ()
и так далее. Это также распространяется на списки и алгебраические типы данных:
f [[x]] = ()
f' [[[x]]] = ()
g (Just (Just x)) = ()
g' (Just (Just (Just x))) = ()
Здесь f
принимает список списков, f'
принимает список списков списков, g
принимает Maybe
, который содержит еще один Maybe
(то есть Maybe (Maybe a)
), и g'
занимает Maybe (Maybe (Maybe a))