Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

elm

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

like image 703
wintvelt Avatar asked May 25 '16 21:05

wintvelt


2 Answers

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

like image 91
Chad Gilbert Avatar answered Sep 29 '22 11:09

Chad Gilbert


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)
like image 22
Simon H Avatar answered Sep 29 '22 10:09

Simon H