On Apr 3, 2010, at 8:19 PM, Matthew Flatt wrote:
> I like
> (define-struct (a x y) #:super b)
> much better than the current
> (define-struct (a b) (x y))
> but I'm not sure that it's worth changing.
The issue I brought up in Boston was the 'heaviness' of the looks of our code,
which to some extent is caused by long names. Going from (make-a 0 1) to (a 0
1) is a good weight loss. The above seems to call for trouble for a minor
advantage.
[[If we just used function headers without bodies as structure definitions,
we'd at least lose more weight:
(define (a x y)) ;; defines a struct a of two fields, x and y
But even that wouldn't do it.
Similarly, we could drop a pair of parens from the current struct syntax to get
to inheritance:
(define-struct a b (x y))
And we could make it all look like a class w/o methods and initialization
expressions other than initial binding expressions:
(define a& (struct b& (init-filed x y)))
and we can claim Racket to be a pre-class-based language. The transition to
methods would be syntactically straightforward from here. And I do this a lot.
What am I getting at? I'd like to lose a lot of syntactic weight as we move
into Racket and not gain any.]]
_________________________________________________
For list-related administrative tasks:
http://list.cs.brown.edu/mailman/listinfo/plt-dev