News for hackers. Stuff that matters.
Re:Racket v8.0 by ph2082 on Sunday February 14, 2021 @04:01AM (#26130740)
Anyone using Racket in production?
Re:Racket v8.0 by soegaard on Sunday February 14, 2021 @04:39AM (#26130895)
Yes.

https://github.com/racket/racket/wiki/Organizations-using-Ra...

Besides of course all the Racket pages/systems (home page, package system, continuous integration system etc).

E-commerce is also possible.

https://defn.io/2019/08/20/racket-ecommerce/ "matchacha.ro, a small e-commerce site selling Japanese green tea"

If you are into quilting, then https://www.youpatch.com/ uses Racket.

Re:Racket v8.0 by cpach on Sunday February 14, 2021 @04:41AM (#26130903)
All of Hacker News is written in the Arc language, which runs on top of Racket.
Re:Racket v8.0 by shakow on Sunday February 14, 2021 @09:07AM (#26132494)
I don't know if it counts as “production”, but I quite often use it to develop small GUI utilities in academic settings.

Performances are bad, but when playing with relatively small datasets, the portable (Linux/macOS/Windows) GUI, the huge stdlib, the ease of deployment of fat binaries and the pleasantness of the language in itself make for a very seductive tool.

Re:Racket v8.0 by alexott on Sunday February 14, 2021 @12:51PM (#26134410)
~20 years ago, we developed the commercial software using the MzScheme - it was quite successful project in ex-USSR, I'm not involved into development since 2007, but Scheme was used until at least 2012-2013th, maybe it's still used.
Re:Racket v8.0 by slaymaker1907 on Sunday February 14, 2021 @05:29AM (#26131098)
I'm currently working on a TSQL parser in Racket because I want to do some code analysis on a few huge stored proc files (some of which are over 30k lines of code). I didn't want to use existing parsers because the trees they produce are monstrous [1,2]. Tried doing some fancy grep work, but it was giving me way too many false matches and wasn't as sound as I would have liked.

I could use any language with reasonable parsing tools, but I like how flexible Racket is about it. Currently using megaparsack[3], but there are many different parsing tools available depending on your needs. Also, once you have done parsing, there are lots of convenient ways to manipulate the parse trees into whatever shape you need.

I also think Racket has a lot of tooling that would make it great for large code bases.

-It has great offline docs (scribble) which don't force you to use some comment based system like JavaDoc.

-It has a very powerful and fast contract system that can be attached either at definition time like most languages or only at module boundaries.

- While it has a macro system, it has a really good macro debugger (it lets you view how the code is iteratively expanded with options to show/hide the expansion of various macros). Since even non-hygienic macros deal with syntax objects and not just datums, macros don't even screw up error messages since line/column info is preserved!

- You compile to executables unlike most scripting languages.

- You can write some code with types and some with them, but unlike say TypeScript the boundary between typed and untyped code is sound since contracts are used to verify these boundaries.

- A lot of the time you don't even need types because most names (i.e. variables and functions) are verified at compile time (to be more specific, at macro expansion time).

- It has very aggressive sandboxing tools that let you control not only what names are visible to some untrusted code, but also control how much memory it uses without creating a new process.

- Safer global variables in the form of parameterize. Very convenient for stuff like when you need to temporarily change the stdout for a single call.

[1]: https://github.com/datacamp/antlr-tsql/blob/master/antlr_tsq... [2]: https://docs.microsoft.com/en-us/dotnet/api/microsoft.sqlser... [3]: https://github.com/lexi-lambda/megaparsack

Re:Racket v8.0 by noisy_boy on Sunday February 14, 2021 @05:43AM (#26131187)
Interesting coincidence - I'm working on a parser that parses the AST produced by JSqlParser[0] for a create view statement to generate mapping between the columns of a view and the columns of its underlying table. It is an interesting example of having to use the visitor pattern[1].

[0]: https://github.com/JSQLParser/JSqlParser [1]: https://en.wikipedia.org/wiki/Visitor_pattern

Re:Racket v8.0 by vasergen on Sunday February 14, 2021 @07:47AM (#26131964)
Another question, how racket compares to clojure for production developmen?