mshell
is, as the name suggests, a shell.
Shells are programs that are useful for executing external executables and writing small scripts to get common tasks done.
Other players in this arena would be projects like:
What's unique about mshell
is that it is a Concatenative, stack-based programming language.
The key property of a programming language like this is that there is an implicit stack of data being transformed throughout the entire execution.
For example, to add two numbers, you push both arguments onto the stack and then +
pops the top two arguments off the top and leaves the result.
1 # Push 1 on the stack [1]
2 # Push 2 on the stack [1 2]
+ # Add them together [3]
Unlike most shells, mshell
is strongly typed. This provides additional safety and precision for your scripts.
Most shells also focus the syntax on the construction of the command line.
In mshell
, building up a command line is equivalent to building up a list of strings, because ultimately that is what is executed.