kryptiskt 12 minutes ago

The big news here is that Racket now can run threads in parallel. While there were ways to get parallelism before (like places), this is much more lightweight and familiar. Anything that expands the areas where Racket is viable is good news to me since I like writing stuff in Racket.

theoldgreybeard an hour ago

Racket is awesome. Really fun language and a good lisp for learning.

Still have core memories of doing assignments in Racket with the Dr. Racket IDE

nine_k an hour ago

Lisp is its own meta-language, and Racket is even more meta. It's a language construction kit, essentially.

  • ModernMech an hour ago

    I've often heard this, but I don't really know of many people in the PL dev community who build their language in Racket. Also, I've taught a PL course and I tried to use Racket as a component, but students mostly just struggled with the LISP-y ness of it all, as they were primarily used to Java and Python. In all, I'm not really sure who Racket is for.

    • nine_k an hour ago

      I suppose, Racket is for CS grads / post-grads / researchers / professors. That is, not for those who just learn CS basics, but for those learnèd enough.

      Students might use some simplified or customized languages produced with Racket. The syntax needs not be lispy; #lang algol60 is built in :)

      • Jeff_Brown 35 minutes ago

        You list only academic positions. Has no popular software been written in it yet?

    • maplant 21 minutes ago

      Idris is bootstrapped on scheme if I recall correctly

varun_ch 2 hours ago

Racket is a fun language. My university uses the bundled teaching languages for first year CS courses. Some people really hate it, and others silently like it.

  • epolanski an hour ago

    And all of them agrees to never use it after university, which is quite telling.

    • linguae 33 minutes ago

      I admit I'm one of those students who never used Racket in a non-academic setting (but mostly because I needed to contribute to already-existing projects written in different languages), and I was taught Racket from one of its main contributors, John Clements at Cal Poly San Luis Obispo. However, learning Racket planted a seed in me that would later grow into a love of programming languages beyond industry-standard imperative ones.

      I took a two-quarter series of classes from John Clements: the first was a course on programming language interpreters, and the second was a compilers course. The first course was taught entirely in Racket (then called DrScheme). As a guy who loved C and wanted to be the next Dennis Ritchie, I remember hating Racket at first, with all of its parentheses and feeling restricted by immutability and needing to express repetition using recursion. However, we gradually worked our way toward building a Scheme meta-circular evaluator. The second course was language-agnostic. Our first assignment was to write an interpreter for a subset of Scheme. We were allowed to use any language. I was tired of Racket and wanted to code in a much more familiar language: C++. Surely this was a sign of relief, right?

      It turned out that C++ was a terrible choice for the job. I ended up writing a complex inheritance hierarchy of expression types, which could have easily been implemented using Racket's pattern matching capabilities. Additionally, C++ requires manual memory management, and this was before the C++11 standard with its introduction of smart pointers. Finally, I learned how functional programming paradigms make testing so much easier, compared to using object-oriented unit testing frameworks and dealing with mutable objects. I managed to get the project done and working in C++, but only after a grueling 40 hours.

      I never complained about Racket after that.

      In graduate school, I was taught Scala and Haskell from Cormac Flanagan, who also contributed to Racket. Sometime after graduate school, I got bit by the Smalltalk and Lisp bugs hard....now I do a little bit of research on programming languages when I'm not busy teaching classes as a community college professor. I find Futamura projections quite fascinating.

      I'm glad I was taught programming languages from John Clements and Cormac Flanagan. They planted seeds that later bloomed into a love for programming languages.

    • alcidesfonseca an hour ago

      If it taught them the core concepts of writing good software, that's a win in my book.

    • Zambyte an hour ago

      Agree? Or maybe none of them graduate into a role where they get to decide what language to use?

      • dleary an hour ago

        Everyone gets to choose which language they use for their personal projects.

        Where are all the Racket personal projects?

        N.B. I say this as someone who personally contributed small fixes to Racket in the 90s (when it was called mzscheme) and 00s (when it was called PLT-Scheme).

        • linguae 20 minutes ago

          I view Racket as an academic language used as a vehicle for education and for research. I think Racket does fine in its niche, but Racket has a lot of compelling competitors, especially for researchers and professional software engineers. Those who want a smaller Scheme can choose between plenty of implementations, and those who want a larger language can choose Common Lisp. For those who don't mind syntax different from S-expressions, there's Haskell and OCaml. Those who want access to the Java or .NET ecosystems could use Scala, Clojure, or F#.

          There's nothing wrong with an academic/research language like Racket, Oberon, and Standard ML.

hit8run an hour ago

What is the use case for this?

  • bjoli an hour ago

    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).

  • gus_massa an hour ago

    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.)

  • Jehuty64 26 minutes ago

    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.

  • Zambyte an hour ago

    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)

    • hatmatrix 4 minutes ago

      What are some difference between the education tooling around Racket and that which enables "industrial" applications Common Lisp is known for?