Add functions and function calls to your MSDscript implementation, including the parser, interpreter, and printer.

Here's a program that you can try out on your interpreter to compute 10!, which is 3628800:

_let factrl = _fun (factrl)
                _fun (x)
                  _if x == 1
                  _then 1
                  _else x * factrl(factrl)(x + -1)
_in  factrl(factrl)(10)