A part of me likes this since it can help simplify some code, like in this example where the "update" is reduced to a single case. You can even simplify it to a trivial line if you define Msg like this: ----------------------- view model = div [] [ button [ onClick <| (+) -1 ] [ text "-" ] , div [] [ text (toString model) ] , button [ onClick <| (+) 1 ] [ text "+" ] ]
type alias Msg = Int -> Int update msg model = msg model ----------------------- On the other hand defining the state logic from the view seems like an antipattern since now the view now has 2 responsabilities (structure and logic) and update practically has none. I'd be pragmatic and use it when it makes sense, but in general I see the disadvantage that you can pattern match against a function argument, e.g. you cant know if "(+) -1" or "(+) 1" was sent. On Tue, Jan 17, 2017, 22:24 Marshall handheld Flax <m.droid.f...@gmail.com> wrote: > Is it wrong for Cmds to contain functions (as opposed to data within > constructors)? If it is a reasonable practice, it would allow for more > functional component-like modules, but does this violate the Elm > architecture? If it does, is it explicitly mentioned in the docs -- I > don't remember seeing it. Here's http://elm-lang.org/examples/buttons > rewritten in the Cmd-contains-functions style. Thank you! > > module Main exposing (..) > > import Html exposing (beginnerProgram, div, button, text) > import Html.Events exposing (onClick) > > main = > beginnerProgram { model = 0, view = view, update = update } > > type Msg > = Transform (Int -> Int) > > view model = > div [] > [ button [ onClick (Transform ((+) -1)) ] [ text "-" ] > , div [] [ text (toString model) ] > , button [ onClick (Transform ((+) 1)) ] [ text "+" ] > ] > > update msg model = > case msg of > Transform xform -> > xform model > > > -- > 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. > -- 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.