I want to type something like 'scheme file.scm' and have it interpret the file, and then take me back to my shell, rather than loading it in the REPL.
edit: I tried scheme < test.scm and it still uses the REPL, the only difference is that scheme exits when the stream ends.
checked
chez --help
, and then I found this(let's say that I'm using chez scheme):Also,
--verbose
is very useful:I think what you want is SCM. You can execute a .scm script like this:
$ scm -f foo.scm arg1 arg2 arg3
See http://people.csail.mit.edu/jaffer/scm_3.html#SEC28 for more details.
The SCM homepage: http://people.csail.mit.edu/jaffer/SCM
scheme < file.scm
should work (as long as you don't specify--interactive
and stdin is not a terminal, scheme works non-interactively).To run a scheme program using MIT Scheme:
The
--quiet
option ensures that the output from your program is the only thing that is displayed (i.e. you won't see the REPL, as per your requirements).Caveat: This will not work if your program prompts the user for input using the input procedures (e.g.
read
,read-char
,read-line
, etc.). This is because of the shell input redirection (<
) (See: relevant question). Unfortunately, there is currently no proper way of executing an MIT Scheme script from the command line when input procedures are used. The best option is probablymit-scheme --quiet --load 'myscript'
, but you'd have to manually exit MIT Scheme when the script finishes. Relevant mailing list thread: [MIT-Scheme-devel] How to run a script and exit?EDIT: Due to the possibility that you may mistype
<
as>
, resulting in the overwrite of your source code, I would suggest encapsulating the above command within a shell script or a shell function. For example:Then you can run
runscheme program.scm
without fear that your source code will be overwritten. (Special thanks to Paul Rooney for bringing this potential mistake to my attention).References
scheme --help
:This command line option seems to have been mistakenly ommitted from the list of command line options in the documentation, but I think this is a legimate command line option because
scheme --help
shows it, and because--batch-mode
is used in other parts of the reference manual (e.g. here).