Issue with shared_ptr for environments: An environment can contain a callable which has a pointer to the enclosing environment. It must be shared because the closure has to own the environment. So when that environment goes out of scope, if it contains a function definition, it will not be deleted since the function definition also has a pointer to the environment. Neither can be weak pointers ! i think this requires a proper garbage collector
Issue with
shared_ptrfor environments: An environment can contain a callable which has a pointer to the enclosing environment. It must be shared because the closure has to own the environment. So when that environment goes out of scope, if it contains a function definition, it will not be deleted since the function definition also has a pointer to the environment. Neither can be weak pointers ! i think this requires a proper garbage collector