1{-# LANGUAGE PatternSynonyms #-}
2module ShouldCompile where
3
4pattern Single{x} = [x]
5
6pattern Double{y,z} = (y,z)
7
8pattern More{x} <- (x,_) where
9  More x = (x, Nothing)
10
11-- Selector
12selector :: Int
13selector = x [5]
14
15update :: [String]
16update = ["String"] { x = "updated" }
17