Files
elm-0.19-workshop/part1/transcript_b.md

4.7 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.

elm-workshop-call-pluralize-passing-3-arguments

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:

elm-workshop-one-function-call

and this is actually a second function call, we're calling a function called text:

elm-workshop-second-function-call

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: elm-workshop-call-pluralize-passing-3-arguments-cropped

and this is calling another function (text) passing 1 argument: elm-workshop-function-call-text-one-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 .. elm-workshop-import-html-exposing-dot-dot 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?"

elm-workshop-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 babel-pluralize-leaf-leaves-1--leaf and it gives us "leaf" down here (refering to the console.log output at the bottom of the Babel page)

If we call pluralize passing "leaf" "leaves" and 3 babel-pluralize-leaf-leaves-3--leaves It gives us "leaves". Great! that's what we expect! Any number over 1 should give us the plural form.

And then let's say, when we implemented this we accidentally made a typo here:

Instead of singular we said singula ...

Ok, so, as we can see, this code still works!