[racket-dev] Where might I find undocumented un-greppable primitives?

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Wed Oct 24 15:56:57 EDT 2012

When you use the macro stepper on

 #lang racket
 (open-input-file "x")

then you can click on an identifier such as `open-input-file6'. The
"apparent identifier binding" information in the right panel says that
it comes from "kw-file.rkt" in `racket/base/private'.

In particular, it turns out to be bound by the expansion of `(define
(open-input-file ....) ....)', which expands to several bindings to
handle keyword arguments.

If you're writing a program that expands programs, you can use
`identifier-binding' to get the kind of information about an
identifier's binding that the macro stepper shows.

At Wed, 24 Oct 2012 15:46:19 -0400 (EDT), "J. Ian Johnson" wrote:
> (open-input-file file-name)
> =maacrooooos=>
> (let ((file-name1 file-name))
>                (if (variable-reference-constant? open-input-file6)
>                  (open-input-file4 '#f '#f file-name1)
>                  (open-input-file6 file-name1)))
> These identifiers are nowhere. I imagine these will be the first of many crazy 
> things I'll run into during my implementation.
> What/where are they? I'm trying to make a sound analysis/small step semantics 
> here.
> Thanks,
> -Ian
> _________________________
>   Racket Developers list:
>   http://lists.racket-lang.org/dev

Posted on the dev mailing list.