Functions Tutorial, Part 4

You can download the source code for this tutorial here. Find the answer key here.

Local Variables

Ludwig allows you to set local variables through the let keyword. You can do so in a binding or in a function. The line after the let keyword must have the same indentation. Let’s demonstrate the let keyword in a binding, first.

myBinding: let x: 1
           x + 2

Here, the binding myBinding will be bound to the value 3.

Now, let’s look at using local variables in a function. Remember the function in Functions Tutorial, Part 1? Here it is:

fun isOdd(n: Int) -> Bool:
  n % 2 == 1

We’re going to use the let keyword to locally bind x to the value 2. This accomplishes the same thing the original function does – it determines if a number is odd by dividing it by x, or 2, and if the remainder is 1, it returns a Boolean value of true.

fun isOdd(n: Int) -> Bool:
  let x: 2
  n % x == 1

Exercise 4

Ready for your next exercise? Below is a function, but there’s something wrong with it. Find the mistake and fix it, so that the module compiles.

When fixed, the multiplyNumber function takes an integer, multiplies it by the value designated by the let keyword (in this case, 3), and returns the product as an integer.

fun multiplyNumber(n: Int) -> Int:
  let x: 3
 n * x

Hint: If you try to compile the module as is, the compiler will give you a tip about what’s wrong.

You can download the file here. Compile it by executing the following:

lwc FunctionTutorial4.lw

Download the answer key if you’d like to check your work.