What's the Trailing Underscore in Elm?
Variables such as model_
, with a trailing underscore, are allowed and conventional in Elm. If you're familiar with a language where _model
can mean an unused variable, this can cause a double-take. The trailing underscore is a nod to Haskell, telling us the variable is related, or similar, to a prior variable.
Here's an example: model_
is the argument of the update
function in the Elm architecture, and model
is the updated model we'll return:
> model_ = { start = "now" }
{ start = "now" } : { start : String }
> model = { model_ | start = "tomorrow" }
{ start = "tomorrow" } : { start : String }
This Stack Overflow answer summarizes the convention:
https://stackoverflow.com/a/5673954/2112512
A single quote (model'
) was used similarly in the past; that syntax was deprecated in Elm 0.18. Here's a GitHub issue describing that decision:
https://github.com/elm-lang/elm-plans/issues/4
Tweet