[racket-dev] Racket startup

From: Eli Barzilay (eli at barzilay.org)
Date: Tue Jun 28 11:27:01 EDT 2011

An hour ago, Carl Eastlund wrote:
> On Tue, Jun 28, 2011 at 10:20 AM, Eli Barzilay <eli at barzilay.org> wrote:
> > Three minutes ago, Carl Eastlund wrote:
> >>
> >> The Racketish name would be #%main, wouldn't it?
> >
> > Yes.  But the problem is that `#%foo' names are intended to be
> > things that you don't write in end-user code, only if you
> > implement a new language or change some fundamental thing.  In
> > that respect, the `#%' feels like serving the same role as `__',
> > which feels dirty.  (I'm also trying to imagine the first-time
> > user impression being told to define `#%main' vs `main' -- the
> > first looks like it leads to an impression of some perl-like
> > language...)
> Yeah, I agree completely, I was just looking for alternatives to
> MAIN.  Now we need an alternative to both.  What was wrong with just
> main, again?  (Looking back... oh, you said not clashing with
> existing code.)

Yes.  Unfortunately, reusing `main' means that current code that
current uses for it (to achieve two running modes) breaks.

> Well, we go in for verbose, self-explanatory names (e.g.
> current-command-line-arguments), how about the-main-program or
> start-program-here or something similar?

I really want to find something short.  Not only to make it very easy
to remember, but also to minimize the transition step from things like

  (printf "Hi, I'm a very quick script.\n")


  (define (MAIN . _)
    (printf "Look at me, I'm a more serious application now.\n"))

BTW, I also considered `run', but that's something that I've used in a
few places, and I'm sure I'm not the only one.

[/me fires up a thesaurus.]

[/me gets frustrated.]

How about one of these:
- `start'
- `launch'
- `execute'
- `act'
- `invoke'
- `*main*'

The thing that makes `main' more appealing is that it's conventional,
and that it's more like "the default entry point".  That's why I
included the `*main*' thing.  Also, given that any of these could be
used in an existing file, maybe some extra punctuation is inevitable.
So maybe things like `main.', `<main>', or `main:'?

All of this makes me think that `MAIN' is better.  Or maybe `Main'.

          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!

Posted on the dev mailing list.