It's Saturday afternoon, and you're ready for a grilled cheese sandwich 🧀. Here is the recipe¹.
Instead of making the sandwich yourself, you remembered that you have a robot sitting in your garage that can do the job for you.
Let's write some code to tell our robot how to make a sandwich!
To get us started, start with the preparation of the ingredients first.
The function above is called prepare_ingredients and takes in cheese, grater, bowl, and bread as inputs and returns a cheese_bowl and sliced_bread as output.
prepare_ingredients calls two functions within its body:
Let's continue preparing the sandwich-making instructions for our robot by writing a function to perform the second step of our recipe¹ - building out the sandwich from the ingredients.
Whew! That's a lot of code!
Computers are 100% literal² like that. We have to spell out everything exactly for them. Otherwise, they won't understand what we're asking of them.
For example, in the code above, take a look at the last two lines of the function body:
If you forgot to save the output of combine_slices into the variable sandwich:
The computer wouldn't know what to do! It doesn't know what sandwich variable is unless you tell it.
 The recipe says:
1. prepare the ingredients
- Grate the cheese in a bowl
- Cut the bread into slices
2. build the sandwich
- Butter the bread on both sides
- Add the cheese to the sandwich
3. grill the sandwich
- Preheat a pan
- Fry the sandwich for three minutes on each side (or until golden brown)
 In some languages, instructions usually end with a semicolon ;.
This means that the instruction:
will not work in those languages!
We have to end it with a ; like this: