Right, thank you for bringing that up. I should have mentioned that the
#lang provides all of racket/base at the module level, so you can write
normal Racket code (including `require`), and any imports at the module
level would be available within the `program` body since it compiles down
to a normal function.

You can also use `provide`, so once you define your command using
`program`, you can provide it the same as any function. The client module
requiring your command would need to be a #lang cli module (at least at the
moment) so that it can actually run the imported command using `run`.


On Sun, Jul 25, 2021 at 11:23 AM D. Ben Knoble <ben.kno...@gmail.com> wrote:

>
> The language is composed of 5 forms - help, flag, constraint, program,
>> and run. With these 5 forms, you get all of the functionality of the
>> built-in parse-command-line form, and with syntax that's much simpler.
>> In fact, the nontrivial forms of the language simply use Racket's normal
>> function definition syntax, so there's very little to learn -- you
>> basically write normal functions and they are implicitly wired to accept
>> their inputs via the command line.
>>
>
> Could we add require? I can think of two compelling reasons:
>
> 1. What else is available in the program form? All of racket, or just
> racket/base? And either way, what if I want to use procedures from other
> packages?
> 2. What if I want to write a bunch of library code, and expose some of it
> in a CLI script? I do this now in different ways: a module+ main that uses
> code defined in the enclosing module, or a script that requires auxiliary
> modules. Often the "body" of the program form isn't more than a call to a
> "main" procedure: this enables me to provide that procedure as part of the
> library, too.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to racket-users+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/racket-users/a0a0ffba-b8a5-4b57-8fc1-b24a821de85cn%40googlegroups.com
> <https://groups.google.com/d/msgid/racket-users/a0a0ffba-b8a5-4b57-8fc1-b24a821de85cn%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CACQBWF%3DQS%3DKu%3DZ-NfSLqmeOq8fb6FOcnA0GkL1xh-kT8WXw0-A%40mail.gmail.com.

Reply via email to