implement legacy macro
  + primitive syntax are isolated from symbol
  + merge env.c and function.c into object.c