![]() At phase 1 and higher, the expander tentatively allows an unbound identifier so that, for example, `define-for-syntax` can define a helper function syntactically after a compile-time expression that uses the helper. While unbound references eventually trigger an error, the reordering can be consuing, as in the example #lang racket (define-syntax (f stx) (syntax-parse stx [(_ oops) #'ok])) which complains about `_` when the real problem is that `syntax-parse` isn't imported. To provide better errors, `raise-syntax-error` now implicitly extends an error message to include a list of previously encountered unbound identifiersin the current compilation unit. That list will be non-empty only at phase >= 1. With that change, the error message for the above example is bad.rkt:5:5: _: wildcard not allowed as an expression after encountering unbound identifier (which is possibly the real problem): syntax-parse in: (_ oops) .... Closes #2167 |
||
---|---|---|
pkgs | ||
racket | ||
.gitattributes | ||
.gitignore | ||
.mailmap | ||
.travis.yml | ||
appveyor.yml | ||
INSTALL.txt | ||
Makefile | ||
README.md |
This is the source code for the core of Racket. See "INSTALL.txt" for full information on building Racket.
To build the full Racket distribution from this repository, run make
in the top-level directory. To build minimal Racket, run make base
.
The rest of the Racket distribution source code is in other repositories, mostly under the Racket GitHub organization.
Contribute to Racket by submitting a pull request, joining the development mailing list, or visiting the IRC channel.
License
Racket Copyright (c) 2010-2018 PLT Design Inc.
Racket is distributed under the GNU Lesser General Public License (LGPL). This implies that you may link Racket into proprietary applications, provided you follow the rules stated in the LGPL. You can also modify Racket; if you distribute a modified version, you must distribute it under the terms of the LGPL, which in particular states that you must release the source code for the modified software.
See racket/src/COPYING_LESSER.txt for more information.