[racket-dev] Proposal for a "no-argument"

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Tue Jul 3 17:07:41 EDT 2012

1. The need for a no-value initial value shows up only when we have a function with two (or more) such parameters. Otherwise case-lambda does fine. 

2. Eli's initial proposal triggered the same response in me as Robby's except that our experience with 'undefined' immediately told me I want to trap variable accesses. In contrast to say touches on (real) futures or laziness, this kind of trap is way more expensive -- because variable accesses are so expensive. 

3. BUT a local analysis of function bodies may suffice here. It would ensure that you check only immediately reachable variable occurrences and variable occurrences in tail positions. Otherwise (given? x) is blessed.

4. If this were reasonably cheap, it would solve our #f/#<void>/#<undefined> problem. 

5. I know that this proposal looks so naive that someone else must have tried and measured it. Then again, perhaps it is too naive for anyone else to have tried and measured it. [We'd also need a proof that this is sound, but I consider my claim 'morally correct.']

-- Matthias

Posted on the dev mailing list.