Какова эта форма соответствия шаблонов: Option{..} <- ..., например. как он используется здесь:
data Option = Option { cabal :: Maybe String , noStylish :: Bool }
...
main = do
Option{..} <- cmdArgs defOption
cabp <- case cabal of
Nothing -> do
...
Кажется, переопределяет cabal и nostylish. Перед совпадением шаблона cabal имеет тип Option -> Maybe String, но после него имеет тип Maybe String.
Этот пример исходит из недавно загруженного пакета cabal2ghci.