* The main page's title appears in search results, so use "The Racket
Language" instead of "Racket". Additional minor tweaks to a few more
titles to make them presentable as search results.
* Add a `#:description' keyword to make it easy to add it to pages. Add
such texts to the main page, downloads, community, learning, people,
and mailing list pages.
* Add a <meta name="robots" content="NOODP" /> to the front page, to
avoid getting the ODP (dmoz) blurb, hopefully the new and improved
description(s) will be used instead. (If not, this should be
reverted.)
The new names are `prompt-tag/c` and `continuation-mark-key/c`
to keep the names consistent with the values that are being
contracted. Also updated the HISTORY file.
Add a `#:nothing' argument so the no-value value can be
made explicit --- based on discussion with Eli, but pending
further review.
Also, renamed `#:first' to `#:before-first' and `#:last' to
`#:after-last' to be more clear, more parallel ro `#:before-last',
and avoid a collision with prominent function names.
The generics library now generates a `name/c` macro
for a generic interface `name`. The combinator can be
used to contract instances (or constructors) of a
generic interface across standard contract boundaries.
A arity-reduced procedure-valued `prop:procedure' was not handled
correctly, for example.
A good candidate for random testing? I had the right kind of test in
place, but only for an arity of 1. It turns out that testing any other
arity would have exposed the problem, so now there are tests with
arity 0. If I had randomly generated procedures instead of manually
constructing `f0' through `f1:+' in "procs.rktl", then maybe I would
have more naturally generalized the arity testing, too. Then again,
I did already have relevant inputs, and it was the testing of inputs
that was too specific.
Closes PR 12870