[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Several comments
> Marc Feeley <feeley@xxxxxxxxxxxxxxxx> writes:
> > #! /bin/sh
> > "exec" "scheme-script" "$0" "$@"
> > (define (main arg1 arg2)
> > (write (+ (string->number arg1) (string->number arg2))))
> > (apply main (command-line-arguments))
> I prefer this approach. I think it is more compatible with the
> traditional "load".
> The Kawa compiler can take this kind of script, and if you compile
> it with --main you get a stand-alone Java application. If you load
> it, you get the behavior expected of the script. I don't think the
> rationale for easier debugging is strong enough to compensate for
> a clumsier and less traditional interface.
> I think "script-arguments" is not a good name. What is a "script"?
> Why the word "script" as apposed to "program" or "application"?
> "command-line-arguments" is both more descriptive and avoids the
> "script" vs "program" issue. It is so descriptive that both Scsh
> and Kawa use it - but they use it for a global variable. Using it
> for a function would clash. Scsh does have "(command-line)" which
> returns the complete command line, including the name the script
> was executed as.
I introduced the name "script-arguments" to distinguish it from the
name "command-line-arguments" I used in previous examples (and in fact
in the example you quote above). The call (command-line-arguments)
always returns the list of command line arguments. I introduced
(script-arguments) to have a different meaning when executed in the
dynamic extent of a "load" (i.e. an error). Although I am open to
different names, I think it is important in this case that "script"
appear in the name to highlight that it should only be used in a
You could define
(error "Attempt to load a script in an inappropriate context")
I'm don't know the rationale for Scsh's use of a global variable for
"command-line-arguments", but I don't like such an interface (I prefer
to hide the information behind a function so that the behaviour can be
changed more easily).