Response utilities in Elm Architecture. Like, build responses from tasks, pipe them, map over.
What's in a response?
type alias Response model action = (model, Effects action)
This package offers alternate ways to construct and transform responses:
res
andtaskRes
for inline constructswithEffects
,withTask
andwithNone
for piped (|>
) constructsmapModel
,mapEffects
andmapBoth
for transformations
Typical usage examples in update
function:
update : Action -> Model -> Response Model Action
update action model =
case action of
Foo bar baz ->
-- ({ model | foo = foo }, Effects.task (someTask bar))
taskRes { model | foo = foo } (someTask bar)
Taz ->
-- ({model | taz = True}, Effects.none)
{ model | taz = True }
|> withNone
SubAction subAction ->
-- let (newSub, newSubEffects) = subActionUpdate subAction model.sub
-- in (\sub -> { model | sub = newSub }) (Effects.map SubAction newSubEffects)
subActionUpdate subAction model.sub
|> mapBoth (\sub -> { model | sub = sub }) SubAction