Create a gist now

Instantly share code, notes, and snippets.

Embed
What would you like to do?
How to update nested fields in record
module Main exposing (..)
type alias Bar =
{ baz : String }
type alias Foo =
{ bar : Bar }
type alias Model =
{ foo : Foo }
model : Model
model =
{ foo = { bar = { baz = "hello world" } } }
setFoo : (Foo -> Foo) -> Model -> Model
setFoo fn model =
{ model | foo = fn model.foo }
setBar : (Bar -> Bar) -> Foo -> Foo
setBar fn foo =
{ foo | bar = fn foo.bar }
setBaz : String -> Bar -> Bar
setBaz str bar =
{ bar | baz = str }
updateBaz : String -> Model -> Model
updateBaz str =
(setFoo <| setBar <| setBaz str)
update : Model
update =
model |> updateBaz "foo bar baz"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment