Philosophical musings: interpreting models

Jim Little
Thu, 16 Sep 1999 03:55:05 -0600

Alaric Williams wrote:
> In other words, with a good enough static typechecker, the compiler
> doesn't need to be specially written to understand phone numbers. It's
> desirable to make the language core fairly simple, then use that language
> to write language extensions in a *compiler independent* way - making the
> writing of compilers much simpler.

I agree, and that's the direction Pliant has taken.  (Pliant is at  I have three reservations with the
extensible-language approach, though:

1) How do you prevent multiple extensions from conflicting?

2) Can you easily support entirely different paradigms?  E.g., can you
extend an order-dependent imperative substrate with order-independent
declarative constructs?

3) What about entirely different kinds of syntax?  E.g., what if I
wanted to extend the language to support path-following, and my
preferred syntax was a line on a two-dimensional map?

I'm not trying to be contrary here, although I'll admit (3) seems
contrived.  All of these are issues which I honestly considered during
the early development of my language system.  My solution was not to
have an extensible language, but an extensible language SYSTEM
consisting of multiple interoperable languages.  The languages aren't
extensible*, but new languages can arbitrarily be added into the mix.


*Actually, the languages can be extensible, but I don't plan on making
any which are.  I'm hoping an extensible language system with language
interoperability will be sufficient.