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


_________________________
  Racket Developers list:
  http://lists.racket-lang.org/dev

Reply via email to