ho qualche boilerplate Haskell che sembra qualcosa di simile:Haskell dinamica dei dati di tipo alterazione
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 })
e mi piacerebbe per rimuovere il testo standard, cedendo qualcosa sulla falsariga di:
setter :: (Config -> a) -> a -> Config -> Config
x = setter confA
y = setter confB
z = setter confC
Ma non ho idea di come costruire una tale funzione setter
. Questo è possibile anche in haskell (non template) o sto facendo un confronto con lo zucchero della sintassi qui? Se sì, come farei una cosa del genere in haskell modello?
Credo sia corretto. Registra la sintassi crea automaticamente * getters * per te, ma quelli sono per lo più inutili quando si desidera creare * setter *. –