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]> 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]> 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].
>> 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.

Reply via email to