racket/pkgs/racket-doc/scribblings
Matthew Flatt 662a9022c0 refine implementation of keyword and optional arguments
The old implementation turns a single optional argument into two
arguments: the optional value and a boolean to indicate whether the
optional value is supplied.

The new expansion uses `unsafe-undefined` in place of not-supplied
arguments, in the general case. If the default-value expression is
simple enough, however, it is copied to call sites that would
otherwise supply `unsafe-undefined`. In the common case where the
default value is `#f`, for example, no run-time test is needed in the
core implementation function to check whether the default is supplied,
because a `#f` will be filled in for callers.

The performance improvement is tiny to non-existent for realistic
programs, but the simpler and reduced generated code may help in the
long run.
2018-05-06 07:59:54 -06:00
..
foreign ffi/unsafe/obj: ignore NULL protocols 2018-04-16 06:34:13 -06:00
getting-started "Mac OS X" -> "Mac OS" 2016-12-23 12:18:36 -07:00
guide Fix typo 2018-05-04 10:34:11 -05:00
inside remove scheme_complex_izi_type from docs 2017-12-05 08:39:19 -07:00
more update "More" now that xrepl is on by default 2016-10-15 07:28:43 -06:00
raco doc: fix zo struct typos 2018-04-07 16:18:23 -04:00
reference refine implementation of keyword and optional arguments 2018-05-06 07:59:54 -06:00
scheme remove the "racket-pkgs" directory layer 2014-12-08 05:22:59 -07:00
style Fix link to TR test suite. 2018-03-12 09:08:00 -05:00
finger.png remove the "racket-pkgs" directory layer 2014-12-08 05:22:59 -07:00
icons.css remove the "racket-pkgs" directory layer 2014-12-08 05:22:59 -07:00
icons.rkt remove the "racket-pkgs" directory layer 2014-12-08 05:22:59 -07:00
icons.tex remove the "racket-pkgs" directory layer 2014-12-08 05:22:59 -07:00
info.rkt remove the "racket-pkgs" directory layer 2014-12-08 05:22:59 -07:00
magnify.png remove the "racket-pkgs" directory layer 2014-12-08 05:22:59 -07:00