Quick summary: I'll remove the #:before-first and #:after-last feature. If anyone wants them, please tell me -- maybe it can be left for the spliced case, or maybe they could always be spliced.
On Monday, Matthew Flatt wrote: > I'm not enthusiastic about this proposal. > > As you say at the start, it seems like a rare case. My main > objection is that it's too rare to merit a change to the main > `lambda' form and other parts of our infrastructure, such as > documentation tools. This -- a more substantial extension of `lambda' and friends -- seems to be the core issue here. I've talked about it to Matthias, and we agreed on something that would help. I'll post about it separately, when I land. > As a weaker objection, I don't agree with the suggestion that naive > users can somehow ignore the `no-argument' value. I think it would show > up prominently in documentation, contracts, and types. I didn't mean that they'll ignore it -- I meant that having a default expression that is rendered as "no-argument" or something similar is self explanatory in a better way than "....", and definitely from an additional #:nothing argument (which is an actual interface change in addition to being obscure). > Weaker still, in terms of how well I can defend it: I'm suspicious > of "no-value" values in general. Granted, we already have `#f', > #<void>, and #<undefined>, but I'm not really happy about that (and > I keep thinking about ways to get rid of #<undefined>). This could be solved, roughly, by what both Robby and Matthias suggested (protecting it from leaking out), but on one hand there's a problem with that, and on the other it makes it equivalent to exposing a boolean flag for the presence of an argument. That's the thing that I'll delay for a proper post on that. Side-question: do you have some potential direction for eliminating #<undefined>? (Asking because it might apply here too.) (Is there any problem with #<void>?) Meanwhile, the interface change, the gensym-encouraging, and the obscurer explanation really bother me, so I'll just get rid of the need for them by removing the #:before-first and #:after-last feature. -- ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: http://barzilay.org/ Maze is Life! _________________________ Racket Developers list: http://lists.racket-lang.org/dev