## Question 1 @ 2023-02-07 18:28

What is the de-Bruijin index translation of the following expression?

{with {x 2}
{with {y {+ x 3}}
{with {z {+ x y}}
{+ x z}}}}

• `{with 2 {with {+  3} {with {+  } {+  }}}}`
• `{with 2 {with {+  3} {with {+  } {+  }}}}`
• `{with 2 {with {+  3} {with {+  } {+  }}}}`
• `{with {x 2} {with {y {+  3}} {with {z {+  }} {+  }}}}`
• `{with {x } {with {y {+ x }} {with {z {+ x y}} {+ x z}}}}`

## Question 2 @ 2023-02-07 18:33

Given the following curried function, what is a proper type declaration for it?

(lambda (y)
(lambda (z)
(+ x y z))))

• `Number Number Number -> Number`
• `((Number -> Number) -> Number) -> Number`
• `(Number -> Number) -> (Number -> Number)`
• `Number -> Number -> (Number -> Number)`
• `Number -> (Number -> Number) -> Number`
• Trick question: this is not a curried function

## Question 3 @ 2023-02-07 18:36

Consider this FLANG code:

{call <thing> <arg>}

What must be true of `<thing>` to run properly and get a value?

1. `<thing>` must be a function form.
2. `<thing>` must evaluate to a function value.
3. `<thing>` must fit on one line.
4. `<thing>` must evaluate to a number.
5. `<thing>` must be a function form or a function binding.
6. `<thing>` can be anything.

## Question 4 @ 2023-02-07 18:40

What would be the result of running this expression using our Flang language implementation?

{with {+ *} {+ 1 2}}

1. `2`
2. `3`
3. Unbound `+` error
4. Unbound `*` error
5. Bad `with` syntax
6. Bad syntax in the call

## Question 5 @ 2023-02-07 18:44

What would be the result of running this expression using our Flang language implementation?

{with {+ *} {call + 1 2}}

1. `2`
2. `3`
3. Unbound `+` error
4. Unbound `*` error
5. Bad `with` syntax
6. Bad syntax in the `call`