Racket v6.8
I&#x27;ve been getting into Racket recently after spending some time with Chicken. I like Chicken a lot. It has a great ecosystem. However, it can&#x27;t compete with the Racket standard libraries (and&#x2F;or libraries that get included by default) -- which are better than most languages its age and popularity (OCaml, Haskell, other Schemes, etc.). For instance, the standard library includes a completely asynchronous web server and asynchronous database drivers.<p>In general, one of the benefits of Scheme versus (say) Python is the regularity and simplicity of the syntax. It also has a better concurrency story.<p>Racket also makes it incredibly easy to parse new languages and run them in a JITed intepreter (Racket). Though I haven&#x27;t played around with this yet. See [0] for a really great example.<p>There are some not great parts though. You&#x27;ll need to spend time deciphering the use of custom languages (#lang). I wrote a little about this for #lang webserver [1]. But my biggest issue with Racket right now is its completely useless stack traces. I found an &quot;errortrace&quot; module [2], but it has not helped in practice.<p>Additionally, the Racket standard library lacks a comprehensive time library and a good string templating library (for HTML generation). I am working on an internal web app in Racket, but am limping through the built-in web-server&#x2F;template module [3]. There is a mustache implementation but I&#x27;m not a big fan [4]. I plan to write a more jinja-like library when it&#x27;s not a distraction from finishing the app.<p>Footnote: Scheme is very similar to Standard ML in that it is a simple base that many people experiment with to test out patterns in language design (styles of concurrency, garbage collection, compilation techniques, etc.) Racket is no different. Pycket was posted recently and I found it very interesting [5]. It is written in RPython. In particular, the white paper introducing it has a fascinating background on JITing and compilation techniques in Scheme [6].<p>[0] <a href="http:&#x2F;&#x2F;beautifulracket.com&#x2F;stacker&#x2F;" rel="nofollow">http:&#x2F;&#x2F;beautifulracket.com&#x2F;stacker&#x2F;</a><p>[1] <a href="http:&#x2F;&#x2F;notes.eatonphil.com&#x2F;2016&#x2F;29&#x2F;walking-through-basic-racket-web-service.html" rel="nofollow">http:&#x2F;&#x2F;notes.eatonphil.com&#x2F;2016&#x2F;29&#x2F;walking-through-basic-rac...</a><p>[2] <a href="http:&#x2F;&#x2F;docs.racket-lang.org&#x2F;errortrace&#x2F;" rel="nofollow">http:&#x2F;&#x2F;docs.racket-lang.org&#x2F;errortrace&#x2F;</a><p>[3] <a href="http:&#x2F;&#x2F;docs.racket-lang.org&#x2F;web-server&#x2F;templates.html?q=web-server/templates" rel="nofollow">http:&#x2F;&#x2F;docs.racket-lang.org&#x2F;web-server&#x2F;templates.html?q=web-...</a><p>[4] <a href="https:&#x2F;&#x2F;github.com&#x2F;adolfopa&#x2F;racket-mustache" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;adolfopa&#x2F;racket-mustache</a><p>[5] <a href="https:&#x2F;&#x2F;github.com&#x2F;pycket&#x2F;pycket" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;pycket&#x2F;pycket</a><p>[6] <a href="http:&#x2F;&#x2F;www.ccs.neu.edu&#x2F;home&#x2F;samth&#x2F;pycket-draft.pdf" rel="nofollow">http:&#x2F;&#x2F;www.ccs.neu.edu&#x2F;home&#x2F;samth&#x2F;pycket-draft.pdf</a>