String representation of records Jakub T. Jankiewicz 02 Apr 2021 08:26 UTC
I have another idea that I've implemented in my Scheme based lisp interpreter.
It's a way of adding string representation of records. In my interpreter it's
So this looks like this (based on SRFI-111 example):
(value unbox set-box!))
(set-repr! box-type (lambda (x) (string-append "#&" (repr x.value))))
repr can be a function that prints to string port and return string.
this is companion to the set-special! syntax that extend the parser. So with
both of those extensions you can have:
that will print as:
You only need to call box with given argument in syntax extension.
(set-special! "#&" 'box)
Nice thing with those two extensions is that if you will want to implement
#u16() you can use syntax extension to add it and it ca be represented as
#u16() when printed.
Those APIs are not orthogonal, first accept function and send symbol but this
can be unified.
Jakub T. Jankiewicz, Web Developer