As mentioned, `eval` executes code. While macros are generally about manipulating code for eventual evaluation, `read` enables more than that, for instance static analysis.
The distinction is also explicit in the term "REPL" (read eval print loop), though many REPLs just pass the input to an interpreter.
The distinction is also explicit in the term "REPL" (read eval print loop), though many REPLs just pass the input to an interpreter.