Ваше описание не совсем корректно.keys
- это поле записи.
Если у вас есть тип записи R
с полем foo :: T
, то сам foo
(используется в качестве значения) имеет тип R -> T
(этофункция доступа к записи).
Поскольку keys
является полем XConfig
, его тип на самом деле
keys :: XConfig l -> !(XConfig Layout -> Map (ButtonMask, KeySym) (X ()))
In
keys defaultConfig c
Мы извлекаем keys
поле от defaultConfig
.Значение, хранящееся в этом поле, само является функцией, которую мы применяем к c
, чтобы получить Map
.