Elm let's you do that and you can definitely treat functions as just data.

That being said, I would advise against it. Keep your Models as pure data
types.

If you imagine dividing your code in three sections: Model, Update and
View, keep all your transformations  and all your Cmd related stuff  in
Update.

You can add another parameter to update:

-- UPDATE

doThis : Model -> Cmd Msg
doThis = doThisStuff

doThat : Model -> Cmd Msg
doThat = doThatStuff

doNothing : Model -> Cmd Msg
doNothing = always Cmd.none

update : (Model -> Cmd Msg) -> Msg -> Model -> (Model, Cmd Msg)
update cmd msg model =
    case msg of
        SomeMsg ->
            let
                newModel = someRelevantUpdating model
            in
                newModel ! [cmd newModel]


and call it in the parent like

newChild = Child.update Child.doThis childMsg model.child


Of course, if you have more than one command you can use a Context record
to keep the commands .

type alias Context =
    { primary : Model -> Cmd Msg
    , secondary : Model -> Cmd Msg
    }

update : Context -> Msg -> Model -> (Model, Cmd Msg)
update ctx msg model =
    case msg of
        SomeMsg ->
            let
                newModel = someRelevantUpdating model
            in
                newModel ! [ctx.primary model]


Just keep you Models and Views as simple and as free from processing as
possible.



On Mon, Jun 13, 2016 at 12:09 PM, 诺铁 <[email protected]> wrote:

> for example, in the http example
> <https://github.com/evancz/elm-architecture-tutorial/blob/master/examples/5-http.elm>,
>  the
>>
>> getRandomGif : String -> Cmd Msg
>
> can be sent to init function as a parameter, then call this parameter
> function in the update function, this might make it easier to test update
> function, and totally separate the component from the program.
>
> --
> 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.
>



-- 
There is NO FATE, we are the creators.
blog: http://damoc.ro/

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