a) A new function is created as a 4-tuple: the name of the function, the formal arguments, the body expression and the current dictionary (= the dictionary of function-definition). The dictionary is needed because Pico implements lexical scoping. Hence, the 'current dictionary' (i.e. dictionary of definition) will be needed when evaluating the body of the function (which happens when calling it)
b) Then the new function is updated in the dictionary. If the name was not already there, the update operation will generate an error.
Notice: We do not need the trick with
Void as used in the definition of functions.
The reason is that the name of the function is already in the dictionary, so the recursive nature of
DCT is obvious.