This page is part of the web mail archives of SRFI 22 from before July 7th, 2015. The new archives for SRFI 22 contain all messages, not just those from before July 7th, 2015.
I would like scripts to be compilable on Scheme systems that offer a compiler of some sort. This would allow the development of the script to be done with an interpreter and when speed is needed it can be compiled. Say we have a script "S.scm" that is invoked with the command S.scm arg1 arg2 arg3 Compiling this script can be done using one of these approaches: 1) Use the compiler to generate an executable, say "S.exe", that can be invoked directly as: S.exe arg1 arg2 arg3 This requires launching the compiled script differently than the noncompiled script, which is unfortunate. There is also the problem (for the compiler) of sending the command-line arguments to the right function. Conceivably the compiler could parse the invocation of "scheme-script" in the script, but for this to be practical the syntax of the shell part of the script should be a well defined subset of the shell syntax, for example always of the form: exec scheme-script "$0" --call <identifier> "$@" Alternatively, the shell part of the script could be free-form except that the first occurrence of "--call <identifier>" defines the function to call, and it is assumed that "scheme-script" receives all of the script arguments. This would allow Windows scripts to use the Windows syntax: scheme-script %0 --call <identifier> %* 2) Use the compiler to generate a "FASL file" (a compiled representation of "S.scm" that can be loaded quickly), say "S.fasl". This can be a bytecode file, a binary file, heap image, etc. Scheme implementations which can generate FASL files typically allow loading the file with (load "S.fasl") or a command line option. Note that it is possible to define "scheme-script" so that when S.scm arg1 arg2 arg3 calls "scheme-script S.scm ...", it will load the file "S.fasl" instead of "S.scm" if "S.fasl" exists. For this to work and be portable, SRFI 22 would have to define the filename extension of FASL files, or specify that an implementation dependent search is performed for a file to load with the same base name (i.e. "S"). Alternatively, this search for the file to load could be done by "scheme-script" only if the script file argument has no extension (under UNIX you can only invoke a script with the same extension as its filename, but under Windows, scripts must have the extension ".BAT" or ".CMD" and can be invoked with or without the extension). So, a script "S.scm" will always load "S.scm", but a script "S" may load "S.fasl", "S.foobar", "S.bat", "S", etc. Could something like this be added to SRFI 22? Marc