Dylan subset/Scheme superset? 
Author Message
 Dylan subset/Scheme superset?

Are there any agreed-upon subsets of Dylan that multiple parties are
implementing?

I'm interested in slightly extending Scheme to include a builtin
object system (maybe by adapting something like Gregor Kiczale's
TinyCLOS), and I'd like my language to be compatible with Dylan insofar
as is practical.  Anybody else doing likewise?

(By the way, I do realize that Dylan has a few incompatibilities
with Scheme, notably the false/nil conflation and the lack of full
continuations.  My understanding is that most of the other differences
are minor.)

I want to implement an object-oriented Scheme, but I want to keep the
language small and easy to compile to decent code.  For example, I
don't want to support the whole set of numeric types---just ints and
64-bit floats.  I'd also like to have a feel for which advanced features
need to be understood by the compiler and which ones can be done with
lexically-scoped macros and whatnot within the language.  (E.g., multiple
value returns, exceptions...?)

Can anybody point me to something that documents a layered approach
to implementing Dylan-like languages?  For example, what compiler hooks
are advantageous to make it possible to do really fast generic function
dispatching, and what can be pushed off on higher-level software like
a metaobject protocol?  (I realize you can layer an object system
entirely on top of Scheme, portably, but I am willing to sacrifice
some portability if simple compiler assist will improve performance
significantly.)

Currently, our type system is just Scheme (without most of the optional
numeric types), except that there's a class object for each builtin type.
(All heap-allocated objects have a class pointer field, and in the case of
builtin types, that value is a pointer to an object created at bootstrap
time.  For immediate values, the compiler knows how to return the
appropriate class object as well.)

Our goals are to produce good-but-not-awesome code, by compiling to C
and using simple bottom-up algorithms for type inference and representation
selection.  (We use the Tarditi et al. trick of an apply-like procedure
to allow us to implement our own stack and support copying garbage
collection and pointer swizzling.)

    -- Paul

--
| Paul R. Wilson,   Computer Sciences Dept.,   University of Texas at Austin  |

| (Recent papers on garbage collection, memory hierarchies, and persistence   |
| are available via anonymous ftp from cs.utexas.edu, in pub/garbage.)        |



Tue, 26 Dec 1995 02:55:03 GMT  
 Dylan subset/Scheme superset?

Quote:

> Are there any agreed-upon subsets of Dylan that multiple parties are
> implementing?

Not that I'm aware of.  I'd be interested in seeing something like this,
though.

Quote:

> (By the way, I do realize that Dylan has a few incompatibilities
> with Scheme, notably the false/nil conflation and the lack of full
> continuations.  My understanding is that most of the other differences
> are minor.)

I'm not sure what sense you're putting on "the false/nil" conflation.
Both Dylan and Scheme distinguish false from the empty list (Scheme
only made this change recently).  Neither conflate these objects with
the symbol nil.

Good luck on your project.  Keep us informed.

  -Andrew



Wed, 27 Dec 1995 06:16:27 GMT  
 
 [ 2 post ] 

 Relevant Pages 

1. A modest proposal (Dyllo: a Scheme-based subset of Dylan)

2. A modest proposal (Dyllo: a Scheme-based subset of Dylan)

3. lazy.dylan 0.1 -- add ML/Scheme-style lazy evaluation to Dylan

4. Scheme/Dylan incompatibilities (Dyllo as a Scheme library)

5. Scheme/Dylan incompatibilities (Dyllo as a Scheme library)

6. The FASTEST subsets function [Was: Subsets of a list]

7. Announcement: Phantom -- an interpreter for a subset of scheme

8. ML-like type-checker for Scheme subset?

9. Announcement: Phantom -- an interpreter for a subset of scheme

10. ML-like type-checker for Scheme subset?

11. request for info on scheme (or subset) for MVS (or portable)

12. Anyone implemented Dylan in Scheme?

 

 
Powered by phpBB® Forum Software