Hi, I come from an OOP background and trying to make the leap to keeping all state in a single immutable data store, which has shown to be amazing as long as the system is small, but I am having trouble scaling up to anything beyond a toy app.
One big challenge is trying to update nested fields. For example if I want to change a forecast parameter in the following code: -- Model type alias Forecast = { parameters: Pf.ArpsParameters , production: List Float } type alias Model = { primaryForecast: Forecast , secondaryForecast: Forecast } -- Init init : (Model, Cmd Msg) init = ( { primaryForecast = { parameters = { q = Nothing , de = Nothing , c = Nothing , months = [0..48] } , production = [] } } , Cmd.none ) I end up with code like this: update : Msg -> Model -> (Model, Cmd Msg) update msg model = let primaryForecast = model.primaryForecast parameters = model.primaryForecast.parameters in case msg of Q string -> ({ model | primaryForecast = { primaryForecast | parameters = { parameters | q = toMaybe (String.toFloat string) } } }, message UpdateProduction) De string -> ({ model | primaryForecast = { primaryForecast | parameters = { parameters | de = toMaybe (String.toFloat string) } } }, message UpdateProduction) C string -> ({ model | primaryForecast = { primaryForecast | parameters = { parameters | c = toMaybe (String.toFloat string) } }}, message UpdateProduction) UpdateProduction -> ... This seems unnecessarily verbose, and I'm unsure whether I am turning wrong with how I am structuring data or if I am trying to modify data incorrectly. Thanks for any help! Austin -- You received this message because you are subscribed to the Google Groups "Elm Discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to elm-discuss+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.