Ответ 1
Это синтаксическое расширение GHC, называемое групповыми символами. Котировочная документация:
Записать синтаксис подстановочных знаков позволяет a
".."
в шаблоне записи, где каждое исключенное полеf
заменяется шаблономf = f
.
Итак, этот код эквивалентен
Option { cabal = cabal, noStylish = noStylish } <- cmdArgs defOption
эффективно привязать имя x
к значению поля записи с именем x
для каждого поля в типе записи.
<-
часть здесь не имеет значения, вы также можете написать
let Option { .. } = some expression