Hacker News new | ask | show | jobs
by hit8run 205 days ago
What is the use case for this?
6 comments

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 compile time (interpreting each markdown file as a source file).

It's a general purpouse language. Reusig an old comment, I used it for

* A bot to reply emails that uses IMAP, SMTP and web scrapping. (It's not 100% automatic. It replies only the easy cases and adds labels so I reply the tricky ones.)

* An program to cleanup Moodle backups that uses gzip and xml. I compiled it and send it to my coworkers. (The backups have too much info, so before restoring it in another site it's better to remove the unused parts.)

I wrote custom language for designing Age of Empires 2 Random Maps. Basically AoE2 already supports it, but the underlying language is very very primitive. While I am not aware of anyone actually using what I made, it was mostly nice learning experience. https://github.com/Erbenos/aoe2-rms

Because its on top of Racket, you get usual high-level language faculties for basically free.

You can solve the versioning problem on your GitHub page by using Nix.
As the other reply said, it is general purpose. It has a focus on education tooling, and language design (languages can be easily implemented on Racket)
What are some difference between the education tooling around Racket and that which enables "industrial" applications Common Lisp is known for?
I think SBCL has better support for annotations. You can claim that a variable is an int and the compiler will thrust you and generante fast code.

You can use Typed Racket to add annotations. The compiler will verify your that your claims are consistent and perhaps add some runtime checks when you read data or use other external sources. It will remove most of the internal checks, but not all of them.

(Probably some features of Racket like impersonators make generating fast code faster, but on the other hand allows Typed Racket and other variants/libraries to ensure external objects behave correctly.)

Disclaimer: I use "Plain" Racket, so both descriptions may be slightly wrong.

Too late to edit:

> impersonators make generating fast code faster

should be

> impersonators make generating fast code harder

That's a good question.

The education tooling is all optional (so their only impact is perceptual) DrRacket, teaching languages, and supporting libraries are all optional. (see Minimal Racket - just the compiler and package manager https://download.racket-lang.org/releases/9.0/#:~:text=SHA25... )

I'd like to know what tooling is missing from Racket that is available in major general purpose languages like C#, Java, or Common Lisp implementations?

Java has the VisualVM. https://visualvm.github.io/

I would love a similar tool for Racket.

between CL, some say it's the debugging and interactive experience: https://gist.github.com/vindarel/c1ef5e043773921e3b11d8f4fe1...
The developers spoke at RacketCon this year https://youtu.be/7Twlh-Opq5E?si=JkWxLib8HTnjVjPI
I use it for trading options.

https://github.com/evdubs/renegade-way