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 <falling...@gmail.com 
> <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 <
>> m.droi...@gmail.com <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 elm-discuss...@googlegroups.com <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 elm-discuss+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to