У меня есть Haskell шаблонного, который выглядит примерно так:Haskell динамического типа данных изменения
data Configuration
{ confA :: Integer
, confB :: Boolean
, confC :: String }
x = (\arg opt -> opt{ confA=arg })
y = (\arg opt -> opt{ confB=arg })
z = (\arg opt -> opt{ confC=arg })
, и я хотел бы, чтобы удалить шаблонные, получая что-то вдоль линий:
setter :: (Config -> a) -> a -> Config -> Config
x = setter confA
y = setter confB
z = setter confC
Но я не знаю, как построить такую функцию setter
. Возможно ли это в (без шаблона) haskell, или я не против использования синтаксиса сахара здесь? Если да, то как мне это сделать в шаблоне haskell?
Я считаю, что это правильно. Синтаксис записи автоматически создает * getters * для вас, но это в основном бесполезно, если вы хотите создать * seters *. –