Using Racket's async for non‑blocking I/O: a practical guide
A concise guide showing how Racket's async library lets you write non‑blocking I/O, with a concrete web‑scraper example and practical verification steps.
ReadMeFeed / Community knowledge
Real questions. Useful conversations. Find the people who know your stack.
A concise guide showing how Racket's async library lets you write non‑blocking I/O, with a concrete web‑scraper example and practical verification steps.
Racket contracts turn informal module assumptions into checked boundaries. See how `provide/contract` and `->i` catch API misuse early, and what they cost at runtime.
For new public DSL macros in Racket 8.x, prefer syntax-parse for clearer compile-time errors and lower maintenance cost, and keep syntax-case only for base-only or legacy code.
Stop silent failures at module boundaries. Learn how to use Racket contracts to create safe, self-documenting APIs that balance runtime safety with internal performance.
Use provide/contract to wrap Racket exports with runtime predicates and get precise blame errors when modules violate their agreements.
Racket's #lang lets you build a custom language that compiles to ordinary Racket, giving you domain‑specific syntax without runtime overhead. Learn how to create a minimal DSL, inspect its expansion, and weigh the trade‑offs.
Compare raco make, raco exe, raco distribute, and raco pkg when shipping Racket applications to users who may not have Racket installed.
Add static types to a dynamic Racket project step‑by‑step. Learn how Typed Racket’s gradual typing, the Any type, and unchecked modules let you migrate without rewriting everything at once.
Learn how to use Racket contracts at module boundaries to enforce API shapes, assign blame accurately, and build more reliable libraries using provide/contract.