[plt-dev] some Racket proposals & implementation
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.]]