tengo algo de Haskell repetitivo que se ve algo como esto:Haskell dinámica de tipo de datos alteración
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 })
y me gustaría que quitar la plancha de caldera, produciendo algo en la línea de:
setter :: (Config -> a) -> a -> Config -> Config
x = setter confA
y = setter confB
z = setter confC
Pero no tengo idea de cómo construir una función como setter
. ¿Es esto posible incluso en haskell (no de plantilla) o estoy chocando contra el azúcar de sintaxis aquí? Si es así, ¿cómo haría algo así en la plantilla haskell?
Creo que esto es correcto. La sintaxis de registro crea automáticamente * getters * para usted, pero esos son en su mayoría inútiles cuando usted quiere crear * setters *. –