# SimpleShell (working title) * SimpleShell is meant to be a programming language to use in place of shell languages (POSIX sh, Bash, ...). * SimpleShell compiles to POSIX sh, where the output is supposed to be human-readable. * The syntax is de facto a mixture of sh, C and Haskell. ## Variables * Variables are local to their function or procedure; there are no (nested) variable scopes. * All variables have static types. Same for function and procedure signatures. ## Functions * Functions are pure; they compute a single value from a list of arguments. * Compare pure Haskell functions. ## Procedures * Procedures are similar to POSIX sh functions. * Procedures take a list of arguments, and return a pair of exit code and return value. * Procedures may receive data from stdin and write data to stdout and stderr.