This variable "lexp AttributeMap.t option" is our attribute table. It associates a variable (index, name) to a lexp. This special builtin is returned when "new-attribute" is called. and "add-attribute" allows us to add new variable to our existing table. "add-attribute" returns a new table (no side-effect). This is what allows us to use attributes as regular Typer variables.
I think the lexp held by the attribute table can be inserted anywhere when the table is in scope. I think the index issue is solved by my latest commit.