> I don't understand. Don't all interactive interpreters read input, > evaluate it, then print the result? Far from it. Lua before version 5.3 used to only read and evaluate (you had to add printing code for anything to be printed): $ lua5.2 Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio > 1 + 1 stdin:1: unexpected symbol near '1' > print(1 + 1) 2 > $ lua5.3 Lua 5.3.5 Copyright (C) 1994-2018 Lua.org, PUC-Rio > 1 + 1 2 > print(1 + 1) 2 > A more serious problem is the conflation of reading and evaluation, Lisp is unique in giving you easy access to the parse tree and representing it using the same plain old data structures as all other Lisp code. Even when it comes to the print part there are still languages limiting how an arbitrary data structure is printed, if it's possible at all. Some place limitations on whitespace control (for example mandatory newlines), others do not allow you to print the object in a form that can be read in again (for example by failing to print with escape characters).