This page is part of the web mail archives of SRFI 76 from before July 7th, 2015. The new archives for SRFI 76 contain all messages, not just those from before July 7th, 2015.
Andre wrote:
> Perhaps another keyword clause
>
> (constructor <expression>)
>
> which can be left out for the default constructor.
As an example, the hash-table example could be expressed:
(define-type hash-table
(constructor (k) (lambda (pred hasher size)
(k pred
hasher
(make-vector (nearest-prime size))
0)))
(fields (pred immutable)
(hasher immutable)
(data mutable)
(count mutable))))
(define-type eq-hash-table
(parent hash-table)
(constructor (k) (lambda (pred hasher size)
(k pred
hasher
size
0)))
(fields (gc-count mutable)))
All the initialization information is in a single place, and both
the parent clause and the field clauses simplify.
A record type with the default constructor ordering would simply
omit the constructor clause:
(define-type point
(fields (x mutable)
(y mutable)))
which is actually a little more concise than the current specification.
We don't need the INIT! clause any longer. The last example from the
document becomes:
(define-type cpoint
(parent point)
(constructor (k) (lambda (x y c)
(set! *the-cpoint*
(k x
y
(color->rgb c)))
*the-cpoint*))
(fields (rgb mutable)))
So again, all the initialization information is in a single place.
Cheers
Andre