Even worse, it blocks the import/export feature of the time-travelling debugger -- see ./elm-stuff/packages/elm-lang/virtual-dom/2.0.3/src/VirtualDom/Overlay.elm which emits the error "type of your program cannot be reliably serialized for history files."
I'm wondering: should the compiler issue a warning if I do something this wrong? Thanks! Marshall On Wednesday, January 18, 2017 at 2:37:00 AM UTC-5, Nick H wrote: > > Your particular example can be rewritten easily to not use functions (and > with even less duplication): > > type Msg > = Add Int > > view model = > div [] > [ button [ onClick (Add -1) ] [ text "-" ] > , div [] [ text (toString model) ] > , button [ onClick (Add 1) ] [ text "+" ] > ] > > update msg model = > case msg of > Add delta -> > model + delta > > > On Tue, Jan 17, 2017 at 11:31 PM, Nick H <[email protected] > <javascript:>> wrote: > >> I would come down on the side of very very wrong. Functions can't be >> converted into strings, and they can't be checked for equality. So if you >> need to debug your program (say, with the interactive debugger), There is >> no way to examine the data being passed in your commands. >> >> >> On Tue, Jan 17, 2017 at 7:24 PM, Marshall handheld Flax < >> [email protected] <javascript:>> 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 [email protected] <javascript:>. >>> 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 [email protected]. For more options, visit https://groups.google.com/d/optout.
