Let’s say we are embarking on an exciting journey to find out whether Enceladus, one of Saturn’s moons, can sustain life. First, we have to escape the gravitational pull from mighty Earth. If our spaceship can travel with a velocity greater than
11.186 km/s, we can then be free to begin our interplanetary journey. Let’s express this in Elm.
The most common way to express a conditional logic in Elm is through an
if expression. It requires three parts:
- A condition
- An expression (branch) to evaluate if the condition is true
- An expression (branch) to evaluate if the condition is false
Unlike some other languages, in Elm we must provide the else branch. Otherwise Elm will throw an error.
The error message above isn’t that helpful. Sometimes Elm can’t explain things in a way we humans can understand. But it’s getting better with each release. So you might see a different (perhaps a better) message with the next major release of Elm.
Like all other expressions, an
if expression also returns a value. Let’s capture the return value of the above expression in a constant.
Some people don’t have the desire to venture out into the unknown corners of Cosmos. But they also don’t like living on Earth. One option for them is to live on a space station that revolves around Earth in perpetuity with horizontal speed of
7.67 km/s. Let’s add this option to our code.
We can nest as many
else if branches as we want. It’s hard to understand what a code does when it’s crammed in one line like that. Elm repl allows us to split code into multiple lines by adding
\ to the end of each line and indenting the next line. Let’s try that.
As mentioned in chapter 1,
elm-repl automatically adds
|s in-front of each line starting from the second line. You shouldn’t type them. Also, don’t forget to indent
"Stay in orbit", and
"Come back" with at least one space. Elm treats lack of indentation as syntax errors in some cases. We will cover those cases in detail in the Indentation section. Finally, we terminated the lines with
\ to make the code more readable, but you don’t have to do that when entering Elm code in a file, which will be covered in the next section.
Even with this ability to type multi-line code, it still is cumbersome to enter longer code in repl. We’ll switch over to writing code in a file soon.