- We don't have (rnrs enums) built-in. We have very little R6RS support, in general. It might be possible to import it from Guile itself but it's more likely that it will have some unmet dependencies. Scheme doesn't have a "define constant" expression, in general, but if you were to do (define foo 42) then Guile's compiler will perform constant propagation to optimize all references to foo if it is never modified with set!
- Here's an example of a custom printer. The #:printer keyword comes before all the usual record type specification. https://codeberg.org/spritely/hoot/src/branch/main/test/test-records.scm#L116
- call-external is for invoking a reference to an external function (a JS function in practice). Let's say you have a foreign binding like (define-foreign foo "example" "foo" -> (ref extern)) and the (ref extern) is expected to a function reference. call-external provides an easy way to call that external function almost as if it were a Scheme procedure.