>>3
Macros should be learned a bit early on, as it's an important building block of the language. They should be explained after one understands functions properly. Even if the user doesn't write many macros at first, at least he can use the knowledge he gains to better understand the language and at the same time, gain useful debugging knowledge(since large parts of the language are built on macros). Although, I think they don't give Packages and Symbols enough space. Those should also be presented fairly early, otherwise they might cause confusion.