There doesn’t seem to be any particular reason I can think of for the Relay module not to import the prelude by default, with a flag present for when it should not be imported (e.g., if you want to reclaim the names for some reason). It shouldn’t lead to any overhead at run time since a dead code elimination pass should be able to take out any functions in the module that are never used, while it probably would be convenient to have the prelude around without having to say so.
I am led to wonder about this because calling it the “prelude” suggests that it is an always-present standard library, yet it does need to be specifically brought in. (Of course, for testing and language development, leaving it out by default might be the easier setting.)
Any thoughts on this matter? @jroesch