Another feature many modern programming languages have is macros. Macros are about transforming code at runtime. By now, you should be convinced that Red is already well equipped to do that with minimal effort; think about all you can do with do, reduce, and load. After all, code is data and data is code! Because Red is first of all a compiled language, macros in Red are more oriented towards transforming code at compile time, but they work equally well when interpreted. Here is an example of a macro to give you a taste:
;-- see Chapter10/macros.red:#macro as-KB: func [n][n * 1024]print as-KB 64 ;== 65536
When the macro is expanded by the preprocessor, the code will result in print 65536. This example is a named macro, and it ...