What does "! []" Elm code syntax in Todomvc mean

Elm

Elm Problem Overview


Coming from react, I am learning to understand Elm.

In the Todomvc example code, there is the following code snippet:

-- How we update our Model on a given Msg?
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
  case msg of
    NoOp ->
      model ! []        <-- What is this?

What I (think I) understand, is that the update function takes in a msg of type Msg and a model of type Model, and returns a tuple of containing a Model and a Cmd Msg.

But how should I read the return statement?

model ! []

What does this statement mean? return a "model [something] empty list"?
Did I miss something in the docs where this is explained? (Googling "elm !" did not get me far :)

Elm Solutions


Solution 1 - Elm

Update for Elm 0.19

Elm 0.19 has removed the exclamation point operator. You must now construct the tuple manually, as in (model, Cmd.none).

Original Answer for Elm 0.18

The exclamation point in model ! [] is just a short-hand function for (model, Cmd.batch []), which is the type returned from typical update statements. It is defined here

Solution 2 - Elm

Note that this syntax is going away in the next version of Elm (0.19) so don't get into the habit of using it ;-)

You can use today, and with 0.19:

update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
  case msg of
    NoOp ->
      (model, Cmd.none)
Categories

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionwintveltView Question on Stackoverflow
Solution 1 - ElmChad GilbertView Answer on Stackoverflow
Solution 2 - ElmSimon HView Answer on Stackoverflow