[racket] Need help with running racket from the command-line

From: Greg Hendershott (greghendershott at gmail.com)
Date: Mon Aug 20 08:40:54 EDT 2012

Racket has the idea of `parameters'. By convention, these are named
current-xyz. Examples include current-input-port, current-output-port,
and current-command-line-arguments.

Parameters are functions you can call to set or get a value. To get
the current value, call with no arguments. To set, call with the new
value.  (That's why you're seeing the function documented both ways.)

Parameters are an alternative to using a global variable and `set!'.
There is a `parameterize' form to make it easier to temporarily change
the value and have it restored.  Also they are per thread.

Parameters are described here:
http://docs.racket-lang.org/guide/parameterize.html

On Mon, Aug 20, 2012 at 3:00 AM, Rouben Rostamian <rostamian at umbc.edu> wrote:
> Oh, the use of (current-command-line-arguments) is a terrific
> idea and a great improvement over what I was trying to do.
> Thanks for pointing it out.
>
> This brings me to a tangentially related question.
>
> I am using Racket v5.1.3.  Searching the manuals for
> current-command-line-arguments leads to the following:
>
>  |   (current-command-line-arguments)
>  |   -> (vectorof (and/c string? immutable?))
>  |
>  |   (current-command-line-arguments argv) -> void?
>  |      argv : (vectorof (and/c string? immutable?))
>  |
>  |   A parameter that is initialized with command-line arguments
>  |   when Racket starts (not including any command-line arguments
>  |   that were treated as flags for the system).
>
> That's all it says.  I understand the first form: it says
> (current-command-line-arguments) returns the command-line
> arguments in a vector.  I don't understand the second form.
> What is (current-command-line-arguments argv) supposed to do?
>
> -- Rouben
>
> On Mon, Aug 20, 2012 at 07:50:00AM +0200, Rüdiger Asche wrote:
>>
>> Do you need to run echo.rkt under control of racket? If you compile
>> it as a standalone, you can use
>>
>> (current-command-line-arguments)
>>
>> within echo.rkt to access the vector or command line arguments.
>>
>> ----- Original Message ----- From: "Rouben Rostamian"
>> <rostamian at umbc.edu>
>> To: <users at racket-lang.org>
>> Sent: Monday, August 20, 2012 12:42 AM
>> Subject: [racket] Need help with running racket from the command-line
>>
>>
>> >I am having difficulty in interpreting Racket's command-line
>> >options described in the User Guide.  Please help if you can.
>> >
>> >I want to do something like this:
>> >
>> >  racket -t echo.rkt -e '(echo "hi")'
>> >
>> >The file echo.rkt (which is given at the end of this message)
>> >is a module that provides a function "echo" which simply prints
>> >its argument to the terminal.
>> >
>> >I expect the Unix command
>> >
>> >  racket -t echo.rkt -e '(echo "hi")'
>> >
>> >to print "hi" to the terminal and exit.  But it doesn't; it complains
>> >about an unbound identifier.  This is Racket v5.1.3, if it matters.
>> >
>> >Here is the content of the file echo.rkt:
>> >
>> >;; echo.rkt ------------
>> >
>> >#lang racket
>> >
>> >(provide echo)
>> >
>> >(define (echo x)
>> > (display x)
>> > (newline))
>> >
>> >;; end of echo.rkt -----
>> >
>> >
>> >--
>> >Rouben Rostamian
> ____________________
>   Racket Users list:
>   http://lists.racket-lang.org/users


Posted on the users mailing list.