This file contains the (highly technical!) code that wraps the functions of the implementation language (Pico in this case) into NAT abstract grammar component. This way the metacircular evaluator can use the functions of the underlying pico.

Let us call the implementing Pico, Pico1, and the implemented Pico, Pico2. Then every native function of Pico2 is a function in Pico1 that is wrapped with a NAT tag. If the MC-eval calls such a function, the wrapping information is removed and the function is called in Pico1, with the arguments converted appropriately (= deification). The result is a Pico1 value. Before this value can be used in the evaluator, it has to be wrapped into Pico2 again (=reification). The terms "to reify" and "to deify" come from philosophy: "to reify" means to materialize something that is only mental. "to deify" means to mentalize something that is material.

All the reified Pico1 functions are put in the Pico2 dictionaries. This is done by make_global, the major function of this file.