pattern matching of the form: Option{..} <-
问题 What is this form of pattern matching called: Option{..} <- ... , e.g. as it is used here: data Option = Option { cabal :: Maybe String , noStylish :: Bool } ... main = do Option{..} <- cmdArgs defOption cabp <- case cabal of Nothing -> do ... It seems to redefine cabal and nostylish . Before the pattern match cabal has type Option -> Maybe String but after it has type Maybe String . This example comes from the recently uploaded package cabal2ghci . 回答1: This is a GHC syntactic extension