Is there a usable programming language that disallows all side effects except for its input stream (aka STDIN) and its output stream (aka STDOUT)? All executable scripts in the language should be guaranteed to produce exactly the same output when given the same input (unless they don't terminate soon enough). This excludes any other external state such as:
- access to the file system (like known to be limited in sandboxes)
- access to APIs, databases, network connections...
- access to environment variables, time
By usable I mean the language should include basic datatypes and operations as known from other programming languages, unlike for instance a Turing machine emulator. How could such a language be useful? It would allow execution of arbitrary scripts for reproducible data transformation.
A defined subset of a more powerful language can also be useful if there is a practical way to actually define and enforce the subset.
P.S.: I extended the question and added an example answer with a language that is actually used for reproducible data transformation but too limited for more complex tasks.