4.1 KiB
Day 1 Hour 1 - h1.mp4 @ 05:11
Now the relevant part is that
this entire chunk of code is an expression
it evaluates to a single value which means it's "portable"
you can pick it up and just drop it somewhere else
and just say "foo equals if quantity == 1 then singular else plural..."
you can do that anywhere you would have any single value
you can just drop in this entire if expression
perhaps with parentheses around it to disambiguate.
And it's exactly the same thing with the ternary
and so you need this both if and else
because it needs to be clear what value is going to be substituted in there
if you do drop this in place of any other value.
So here's how function calling works
this was the code we had in "try elm"
slightly below the definition of pluralize
calling a function is just done with
whitespace
so we are going to say pluralize followed by some whitespace
followed by its' arguments.
Also note that there are no commas between the arguments
so it's just pluralize "leaf" "leaves" 1
the parentheses here in this case are to disambiguate
between two function calls that we are making
so this right here, that's all one function call:
and this is actually a second function call,
we're calling a function called text:
and what we're passing to text is the result of
calling pluralize passing "leaf" "leaves" and 1
so this is calling a function (pluralize) passing 3 arguments:

and this is calling another function (text) passing 1 argument:

the one argument we are passing is the result of the other function.
note that this is a case of the parentheses serving to disambiguate.
if we did not have the parentheses here
this would be indistinguishable from calling text passing in four arguments.
the first is the function pluralize
and then "leaf" "leaves" and 1
is the other three.
So parentheses for disambiguation
but otherwise whitespace is just what you do for calling functions.
Finally we have at the top
we have this import Html exposing ..
we'll get into modules a little more later,
but it's basically just saying:
"Hey, bring in the Html module and expose all of the stuff in there."
such as this text function and we will make use of those.
Day 1 Hour 1 - h1.mp4 @ 07:15
OK, so "why bother?"
I just taught you a bunch of new syntax,
and showed you how you can write the same thing in JavaScript
why bother learning a whole different language...?
is it just learning syntax for nothing?
What can you do in elm, like what does it get you that Babel does not?
That's a great question.
So, let's say we've got this implementation
and we build it and we're going to use it in production
and hopefully we write tests for it,
hopefully those tests do a good job covering the different cases.
But let's say we make a mistake in our implementation here:
So we're like:
pluralize "leaf" "leaves" 1
and it gives us "leaf" down here




