From Wikipedia:
The REPL is commonly misnamed an interpreter. This is a misnomer—many programming languages that use compilation (including byte
REPL stands for Read-Eval-Print-Loop. Both an interpreter and a compiler can be used to do the eval
bit - either have an instance of the interpreter running in the background and feed it the input, or use the compiler to compile incrementally (granted, this takes much more work and some cooperation from the compiler writers, but it's possible, as countless instances show - you generally only compile to bytecode though). The rest is mostly I/O and some glue to keep all the previously entered definitions available for the next commands.