{"slug": "racket", "name": "Racket", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 8, "commenters": 9, "warners": 0, "score": 7.364, "rising": 1.36, "first": "2025-11-12", "latest": "2026-10-29", "why": "if you're a CS language nerd Racket might be a good fit for you", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 8, "neutral": 1, "compare": 0, "warn": 0}, "spark": [3, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1], "listed": true, "loved": [], "caveat": "", "short_quote": "if you're a CS language nerd Racket might be a good fit for you", "kind": "", "icon": true, "domain": "racket-lang.org", "github_repo": null, "official_url": "https://racket-lang.org", "pricing": "", "aliases": ["Racket"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 804550592, "item_id": 50284412, "url": "https://news.ycombinator.com/item?id=50284412", "by": "spauldo", "date": "2026-10-29", "version": null, "stance": "recommend", "quote": "if you're a CS language nerd Racket might be a good fit for you", "excerpt": "To add to what everyone else is saying, most Lisps support redefining functions in a running application. Instead of the code/compile/test loop most languages use, you can create Lisp programs iteratively from inside the program. It's really quite neat. Emacs is an easy way to play around with it, but if you're a CS language nerd Racket might be a good fit for you. And if you want this type of environment but without", "context": "", "use_case": "interactive Lisp development", "switched_from": "", "story": "Emacs Turns 50"}, {"id": 797934912, "item_id": 49870932, "url": "https://news.ycombinator.com/item?id=49870932", "by": "so-cal-schemer", "date": "2026-09-27", "version": null, "stance": "recommend", "quote": "Racket is available at http://racket-lang.org/", "excerpt": "In the ideal world, software developers would analyze each problem in the language of its domain and then articulate solutions in matching terms. They could thus easily communicate with domain experts and separate problem-specific ideas from the details of general-purpose languages and specific program design decisions. In the real world, however, programmers use a mainstream programming language someone else picked ", "context": "", "use_case": "language-oriented programming", "switched_from": "", "story": "A Programmable Programming Language (2018)"}, {"id": 787945376, "item_id": 49246586, "url": "https://news.ycombinator.com/item?id=49246586", "by": "klibertp", "date": "2026-08-10", "version": null, "stance": "recommend", "quote": "Contracts in Racket are duals of types", "excerpt": "> I think in order to appreciate DbC [...] one needs to have some idea of \"Program Correctness\" concepts in the lineage of Floyd/Hoare/Dijkstra and Meyer. Agreed. To me, full-program (or system) formal verification is something I'd love to have, but I also acknowledge that even champions of formal methods (like Tony Hoare you mentioned) doubt its practicality, due to how large our software systems tend to be nowadays", "context": "", "use_case": "Contracts and typed programming", "switched_from": "", "story": "Assert(): A Modern How To"}, {"id": 751035632, "item_id": 46939727, "url": "https://news.ycombinator.com/item?id=46939727", "by": "soegaard", "date": "2026-02-08", "version": null, "stance": "recommend", "quote": "https://docs.racket-lang.org/rkt-tree-widget/index.html", "excerpt": "https://docs.racket-lang.org/rkt-tree-widget/index.html", "context": "", "use_case": "GUI widgets", "switched_from": "", "story": "Hoot: Scheme on WebAssembly"}, {"id": 736394448, "item_id": 46024653, "url": "https://news.ycombinator.com/item?id=46024653", "by": "bjoli", "date": "2025-11-23", "version": null, "stance": "recommend", "quote": "I used it to write a macro processor for C", "excerpt": "I used it to write a macro processor for C which allowed me to write some macros with s-expressions and have it expand to a lot of C code. That way I could actually write real macros for C. I have also written GUI apps for various things. Kind of like what I did with TCL back in the day. I wrote a little maths game for my son. I also wrote a static site generator in it that allowed me to execute racket code at compil", "context": "", "use_case": "Macros, GUI apps, static site generator", "switched_from": "", "story": "Racket v9.0"}]}], "caveats": [], "who": [], "tags": [], "use_cases": ["interactive lisp development", "language-oriented programming", "contracts and typed programming", "lisp language and docs", "gui widgets", "macros, gui apps, static site generator"], "compared": [], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=46023460", "title": "Racket v9.0", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=50273171", "title": "Emacs Turns 50", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49870931", "title": "A Programmable Programming Language (2018)", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49164687", "title": "Assert(): A Modern How To", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48635417", "title": "Rhombus v1.0", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48233398", "title": "I keep bouncing off the Scheme language", "mentions": 1}], "sentiment_by_month": {"2025-11": {"recommend": 3}, "2025-12": {}, "2026-01": {}, "2026-02": {"recommend": 1}, "2026-03": {}, "2026-04": {}, "2026-05": {"recommend": 1}, "2026-06": {"neutral": 1}, "2026-07": {}, "2026-08": {"recommend": 1}, "2026-09": {"recommend": 1}, "2026-10": {"recommend": 1}}, "versions": [], "version_unnamed": 0, "family_ref": null, "runs_on": null, "lines": [], "quotes": [{"id": 804550592, "item_id": 50284412, "url": "https://news.ycombinator.com/item?id=50284412", "by": "spauldo", "date": "2026-10-29", "version": null, "stance": "recommend", "quote": "if you're a CS language nerd Racket might be a good fit for you", "excerpt": "To add to what everyone else is saying, most Lisps support redefining functions in a running application. Instead of the code/compile/test loop most languages use, you can create Lisp programs iteratively from inside the program. It's really quite neat. Emacs is an easy way to play around with it, but if you're a CS language nerd Racket might be a good fit for you. And if you want this type of environment but without", "context": "", "use_case": "interactive Lisp development", "switched_from": "", "story": "Emacs Turns 50"}, {"id": 797934912, "item_id": 49870932, "url": "https://news.ycombinator.com/item?id=49870932", "by": "so-cal-schemer", "date": "2026-09-27", "version": null, "stance": "recommend", "quote": "Racket is available at http://racket-lang.org/", "excerpt": "In the ideal world, software developers would analyze each problem in the language of its domain and then articulate solutions in matching terms. They could thus easily communicate with domain experts and separate problem-specific ideas from the details of general-purpose languages and specific program design decisions. In the real world, however, programmers use a mainstream programming language someone else picked ", "context": "", "use_case": "language-oriented programming", "switched_from": "", "story": "A Programmable Programming Language (2018)"}, {"id": 787945376, "item_id": 49246586, "url": "https://news.ycombinator.com/item?id=49246586", "by": "klibertp", "date": "2026-08-10", "version": null, "stance": "recommend", "quote": "Contracts in Racket are duals of types", "excerpt": "> I think in order to appreciate DbC [...] one needs to have some idea of \"Program Correctness\" concepts in the lineage of Floyd/Hoare/Dijkstra and Meyer. Agreed. To me, full-program (or system) formal verification is something I'd love to have, but I also acknowledge that even champions of formal methods (like Tony Hoare you mentioned) doubt its practicality, due to how large our software systems tend to be nowadays", "context": "", "use_case": "Contracts and typed programming", "switched_from": "", "story": "Assert(): A Modern How To"}, {"id": 778679457, "item_id": 48667466, "url": "https://news.ycombinator.com/item?id=48667466", "by": "cosmicriver", "date": "2026-06-24", "version": null, "stance": "neutral", "quote": "Racket is s-expression based, so it has a lot of parentheses.", "excerpt": "Racket is s-expression based, so it has a lot of parentheses. Racket can claim to have slightly fewer parentheses than most other Lisps because it uses brackets in some places rather than parentheses.[1] Rhombus is a novel notation (that is implemented as a Racket macro) which eliminates the need for almost all parentheses. They have a handful of code snippets on their homepage. [1] Racket doesn't distinguish between", "context": "", "use_case": "", "switched_from": "", "story": "Rhombus v1.0"}, {"id": 772233840, "item_id": 48264615, "url": "https://news.ycombinator.com/item?id=48264615", "by": "evdubs", "date": "2026-05-25", "version": null, "stance": "recommend", "quote": "", "excerpt": "If you're referring to C# (and Java) being the Kingdom of Nouns where a type like ArrayList is defined and contains its methods, sure, Lisp is not exactly like that, but I feel like conventions give you a similar experience. For example, functions related to hash tables all have `hash` in their name and are either constructors or they take a `hash` argument. They are contained in their own file (hash.rkt). Also, does", "context": "", "use_case": "Lisp language and docs", "switched_from": "", "story": "I keep bouncing off the Scheme language"}, {"id": 751035632, "item_id": 46939727, "url": "https://news.ycombinator.com/item?id=46939727", "by": "soegaard", "date": "2026-02-08", "version": null, "stance": "recommend", "quote": "https://docs.racket-lang.org/rkt-tree-widget/index.html", "excerpt": "https://docs.racket-lang.org/rkt-tree-widget/index.html", "context": "", "use_case": "GUI widgets", "switched_from": "", "story": "Hoot: Scheme on WebAssembly"}, {"id": 736438528, "item_id": 46027408, "url": "https://news.ycombinator.com/item?id=46027408", "by": "gus_massa", "date": "2025-11-23", "version": null, "stance": "recommend", "quote": "", "excerpt": "I agree. I remember very few bugs caused by the rewrite, but I don't remember recent ones. For example, I found a bug running the tests of the r7rs package, it was simplified to a bug in \"plain\" Racket and later fixed, 3 days after the initial report. It was in June 2019 https://github.com/racket/racket/issues/2675 Note that at that time, the default version of Racket was he old one (before the rewrite).", "context": "", "use_case": "", "switched_from": "", "story": "Racket v9.0"}, {"id": 736394448, "item_id": 46024653, "url": "https://news.ycombinator.com/item?id=46024653", "by": "bjoli", "date": "2025-11-23", "version": null, "stance": "recommend", "quote": "I used it to write a macro processor for C", "excerpt": "I used it to write a macro processor for C which allowed me to write some macros with s-expressions and have it expand to a lot of C code. That way I could actually write real macros for C. I have also written GUI apps for various things. Kind of like what I did with TCL back in the day. I wrote a little maths game for my son. I also wrote a static site generator in it that allowed me to execute racket code at compil", "context": "", "use_case": "Macros, GUI apps, static site generator", "switched_from": "", "story": "Racket v9.0"}, {"id": 734451664, "item_id": 45903229, "url": "https://news.ycombinator.com/item?id=45903229", "by": "ashton314", "date": "2025-11-12", "version": null, "stance": "recommend", "quote": "Racket really shines in this regard", "excerpt": "Racket really shines in this regard: Racket makes it easy to build little DSLs, but they all play perfectly together because the underlying data model is the same. Example from the Racket home page: https://racket-lang.org/#any-syntax You can have a module written in the `#racket` language (i.e., regular Racket) and then a separate module written in `#datalog` and the two can talk to each other!", "context": "", "use_case": "DSL / language building", "switched_from": "", "story": "Learn Prolog Now (2006)"}]}