Note: ← is typed as _ in the interlisp vm.
If you can't see UTF8, those are all like <-

Day one of my challenge of porting everything interesting about
Twitter's open source projects to interlisp.

Well, I opened what turned out to be a derelict repository, for a
ruby-jekyll usage that Twitter had dropped. Still, there was one scala
file creating a class with accessors.

So... I guess we will finally find out what interlisp records are
like.

Make a new interlisp exec and make sure the package is IL:

The class name was SimpleClass. We'll call it simplerecord. There are
junk fields, demonstrating one with a getField alias and one
without. This turns out to be really interesting in interlisp.

← (record simplerecord (foo foobean) foo     ← "foo"
                                    foobean ← "fooBean"
  (accessfns ((getfoobean (fetch (simplerecord foobean) of datum)))))
simplerecord

I didn't actually figure out where getfoobean turns up yet. My aarch64
openbsd build seems different to a linux release I also tried; I
might've done something weird building it. Also the last field of a
record is meant to be dotted so the record is dense; but this build
objects to that.

Anyway

← (setq instance (create simplerecord foobean ← "oofbean")
("foo" "oofbean")

← (with simplerecord instance (list foobean foo))
("oofbean" "foo")

This shows how DWIM is not just a package or spellchecker; records
have their own language, that I think would be called a
comprehension in python these days.

More specific record types are:

DATATYPE TYPERECORD ARRAYRECORD PROPRECORD ASSOCRECORD HASHLINK