Generative and nongenerative record types
Marc Nieper-Wißkirchen
(30 Oct 2022 09:09 UTC)
|
Re: Generative and nongenerative record types
John Cowan
(30 Oct 2022 16:37 UTC)
|
Re: Generative and nongenerative record types
Marc Nieper-Wißkirchen
(30 Oct 2022 16:57 UTC)
|
Re: Generative and nongenerative record types
John Cowan
(30 Oct 2022 22:20 UTC)
|
Re: Generative and nongenerative record types
Marc Nieper-Wißkirchen
(31 Oct 2022 09:12 UTC)
|
Re: Generative and nongenerative record types
Marc Feeley
(31 Oct 2022 12:00 UTC)
|
Re: Generative and nongenerative record types
Marc Nieper-Wißkirchen
(31 Oct 2022 12:37 UTC)
|
Re: Generative and nongenerative record types
Marc Feeley
(31 Oct 2022 13:21 UTC)
|
Re: Generative and nongenerative record types
Marc Nieper-Wißkirchen
(02 Nov 2022 13:09 UTC)
|
Re: Generative and nongenerative record types
Marc Nieper-Wißkirchen
(02 Nov 2022 14:57 UTC)
|
Re: Generative and nongenerative record types
Marc Nieper-Wißkirchen
(03 Nov 2022 19:20 UTC)
|
Re: Generative and nongenerative record types Marc Nieper-Wißkirchen (08 Nov 2022 16:23 UTC)
|
Re: Generative and nongenerative record types
Daphne Preston-Kendal
(08 Nov 2022 16:24 UTC)
|
Re: Generative and nongenerative record types
Marc Nieper-Wißkirchen
(08 Nov 2022 16:29 UTC)
|
Am So., 30. Okt. 2022 um 17:57 Uhr schrieb Marc Nieper-Wißkirchen <xxxxxx@nieper-wisskirchen.de>: > > Am So., 30. Okt. 2022 um 17:37 Uhr schrieb John Cowan <xxxxxx@ccil.org>: > > > > > > > > On Sun, Oct 30, 2022 at 5:09 AM Marc Nieper-Wißkirchen <xxxxxx@nieper-wisskirchen.de> wrote: > > > >> 95% or more of the record-type definitions in practice are supposed to > >> be nongenerative. > > > > > > What is the evidence for this claim? As far as I know, almost all record-type definitions are global, which means it makes no difference whether they are generative or non-generative. > > Global record-type definitions are effectively non-generative. > > Local record-type definitions are helpful if one wants to use lexical > scoping. If the type to be defined is only used locally in a > procedure (which includes a macro transformer, for example), this can > be good coding practice to prevent pollution of the (module-)global > namespace. If these local record-type definitions were generative, > the "good coding practice" would lead to inefficient code. PS Due to phasing, record definitions that are used in macro expanders have to be defined locally (unless one writes a helper library). E.g.: (define-syntax foo (lambda (stx) (define-record-type ast (nongenerative) ...) ... (syntax-case stx () ...)) We don't want that every invocation of the foo macro creates a new record type. The small language would be lacking here.