Stop the nonsense! Racket 8.4 helps with expression checker and new editor

Racket 8.4

Lisp dialect Racket is now available in version 8.4, sporting a new expression editor and a kind system for Typed Racket which looks to “prevent programmers from writing nonsensical type expressions”.

The Racket language has been around since 1995 when it was developed under the PLT Scheme banner in an effort to teach Scheme to beginner programmers. Though not as popular as other languages that popped up in those years (Java and JavaScript are quite the competition), it is used in popular projects like the Hacker News and still serves as a springboard for quite a number of budding developers. 

The project is distributed under the MIT License and Apache License v2.0, and contains – language aside – an IDE, a web server, a GUI, a number of tools, and language variants such as Lazy Racket and Typed Racket (“Racket’s gradually-typed sister language”). The new kind system is part of the latter and promises to check for correctly applied type constructors, rejecting ill-formed recursive types along the way.

Command-line Racket looks to offer better dev support as well and comes fitted with a new expression editor for the read-eval-print loop. The addition is based on the Chez Scheme expression editor, but uses the same syntax colouring and indentation tools as integrated development environment DrRacket to make things a little easier.

Speaking of DrRacket, the IDE can now do its language-specific colouring and indentations in the interactions window, and changes parentheses-based keyboard shortcuts based on the parentheses used by the current language. Regions commented-out via #; are meanwhile faded out to facilitate better visual comprehension.

Another area of improvement is the web server, whose files dispatcher learned to work with all standard caching-related HTTP response headers for the release. The new server variant also supports use of the Cache-Control header, and includes a new dispatcher that captures common patterns of processing HTTP requests and responses in a layered fashion.
Other than that, Racket 8.4 provides users with a new stat to share unified information about file-system objects, an optional try-order? argument for some hash operations, and some computational improvements. The full list of changes can be found in the Racket repo, where the team behind the language also shares some tips for updating to the new version.