[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
compiler types: records / collections interaction
From: |
Al |
Subject: |
compiler types: records / collections interaction |
Date: |
Fri, 9 Feb 2024 21:59:58 +0200 |
User-agent: |
Betterbird (Linux) |
Suppose I need a record of a record type myrec, and collections
(vectors-of, lists-of and hash-tables) with values myrec.
What combination of
* define-record-type (srfi-9, srfi-99, chicken define-record, whatever) and
* (declare type ...)
can I use to inform the compiler that (for collections of myrec)
vector-ref returns myrec's (likewise list car/cdr, hash-table-ref)? And
that it needs not emit any instance-type-checking code for objects
extracted from such collections?
Furthermore, how can I see what the compiler thinks of a given
identifier? I've used 'csc -ot' but it only emits types for some
identifiers. Maybe it inlines others, I don't really know.
Separately, how can I tell the compiler that fields in these records
have certain types? Add type declarations for the implicitly-defined
per-field accessors and mutators?
I've tried unwrapping collections of myrec, and also myrec fields, and
it seems to make a huge difference in the speed of compiled code.
Presumably because I don't know how to tell the compiler to omit type
checking in "safe" cases. I know I could use some of the more aggressive
optimization levels, but I don't really want to compile unsafe code
everywhere, just where I'm using the correct types.
Thanks,
Al
- compiler types: records / collections interaction,
Al <=