[racket] Providing/importing user lang modules.

From: J Arcane (jarcane at gmail.com)
Date: Sun Nov 23 12:04:33 EST 2014


Restructuring things this way does in fact appear to work. It means I still
have to cross reference stuff a bit when writing the libs, but I can safely
now pen a standard library and then just provide the lot in a new simpler

You can see the result here:

On Sun, Nov 23, 2014 at 3:50 PM, Gustavo Massaccesi <gustavo at oma.org.ar>

> You should split the language in three parts:
> 1) The heresy/pre-base language (or heresy/private/pre-base) that
> implements the basic syntax (no pun intended), for example 'if',
> 'def', ... (probably most of the current content of heresy/main)
> 2) The libraries, for example heresy/lib/string that implements for
> example 'mid', 'left', 'right', ... (I still miss 'right', I have a
> definition of 'string-right' in my personal racket library.)The
> libraries can be written mostly in heresy/pre-base, with a little part
> of racket. Perhaps split that in low-level libraries that use some
> racket and high-level libraries that use only a restricted version of
> heresy (pre-base + low-level libraries).
> 3) The heresy language, that reexports all from heresy/pre-base and
> the libraries.
> If you see he implementation of racket, it starts with a #%kernel
> language. Then it constructs the racket/pre-base language with more
> features. Then it constructs the racket/base and racket languages.
> (Perhaps it has more intermediate steps that I missed.)
> https://github.com/plt/racket/blob/master/racket/collects/racket/private/base.rkt
> Gustavo
> On Sat, Nov 22, 2014 at 3:47 PM, J Arcane <jarcane at gmail.com> wrote:
> > Today I decided to set about writing some standard library functions for
> > Heresy. My goal is to write as much as I can in Heresy proper, only
> falling
> > back to the Racket core when I need to provide a missing feature.
> >
> > The trouble I'm having though, is in making any of this code available to
> > other Heresy code or providing it as part of the standard language. I
> just
> > run into circular dependency issues; my lang depends on the core, and if
> the
> > core depends on the library ... round and round we go.
> >
> > I'm baffled as to how I can extend my language in my own language if I
> can't
> > actually provide the functions I create for it. How do I write in my lang
> > and the provide the results such that future programs can use them, or
> > especially, so that the files in my library can safely reference each
> other?
> >
> > As always, the code is here: https://github.com/jarcane/heresy
> >
> > Thank you,
> > John Berry
> >
> > ____________________
> >   Racket Users list:
> >   http://lists.racket-lang.org/users
> >
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20141123/257cc325/attachment.html>

Posted on the users mailing list.