Hello, Today I uploaded an experimental package that I made called Extenor[1].
Extenor is a shortened name for “Extensible Nominal Record”. The key goal behind it was to have something like Racket's structs that can have struct-type-properties, but also be extensible and keep extensions when functionally updated (unlike Racket's structs). Secondarily, but similarly, I wanted a low-hassle flexible dictionary-like object for use in Rash pipelines that has struct-type-properties that let it hook into various generic interfaces. Eg. imagine an `ls-in-racket` that returns a dictionary with a bunch of information about each file that can be easily filtered, augmented, etc, but that also implements a hypothetical `prop:path` that allows it to be used with `open-file` and other functions that accept paths. I've talked to a few people about the functional update of extended structs problem before, so I thought I would reach out and ask for comments on this design. It's somewhat shoe-horning two problems into one solution, but I find that I like it so far, at least for the uses I imagine. A more strictly struct-like version of this with extenor-ref/extenor-set removed might be better for general-purpose uses. I haven't really read the literature on mixins and multiple inheritance, so I can imagine this design could be falling for some classic design blunders, and I'm open to any suggestions on good papers or other resources to read about that. [1] https://pkgd.racket-lang.org/pkgn/package/extenor (At the time of writing, the package system reports on a version that has a bug in Racket BC because I originally only tested it on Racket CS, and the hosted documentation doesn't have examples in the Guide section while the git master branch does. So... if you want to play around with it or read the docs you might want the git version until the package server runs again...) Thanks, William Hatch -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/20201220041729.GA19473%40conspirator.