What does "! []" Elm code syntax in Todomvc mean
ElmElm 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)