Earlier quoted context omitted.
Might have been Waterloo's Introduction to Functional Programming (CS 135). I have TA'd (technically ISA'd) that course several times and helped countless students in office hours. The struggling students didn't just hate Racket, they hated the whole HTDP philosophy of following a "design recipe" and writing documentation prior to implementing a function. Most of those struggling students essentially waited till the…
I loved that course so much. I remember some seemed to hate it because "when are we ever going to use Scheme in real life?"
Racket v9.0
101–110 of 129 posts
Re: Racket v9.0
#102Re: Racket v9.0
#103I want to thank Go for popularizing coroutines. Seems like every language now has adopted it and I love that.
Besides the sibling comment, we already knew them from Solo Pascal and Modula-2 among other 1980's languages.
Co-routines were a famous way to simulate paralelism when you only got a single CPU.
Re: Racket v9.0
#104I want to thank Go for popularizing coroutines. Seems like every language now has adopted it and I love that.
Go definitely popularized concurrency for the modern era, but coroutines themselves are ancient tech. Melvin Conway coined the term in 1963 and Simula had them by '67. It’s also worth noting that the specific 'coroutine' model most languages are adding today (JS, Rust, Python) is based on C#'s async/await. Go actually rejected that approach in favor of Green Threads (Goroutines, not coroutines), so technically it pop…
Solaris LWP and Windows Fibers were two other examples of OSes providing the infrastructure for a task based programming, although they had some issues.
Re: Racket v9.0
#105Racket 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.
And all of them agrees to never use it after university, which is quite telling.
Re: Racket v9.0
#106The 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.
What kinds of things do you write in Racket? I’m a clojure dev and so I’m a big fan of lisp. I’m just curious what kinds of projects you would use Racket for
Re: Racket v9.0
#107I first experimented with Lisp back in the mid-80’s, and have returned to it time and again—not as a language for serious projects, but just as a way of learning new techniques and new ways to think about writing software. I’ve tried using Racket on a number of occasions going back to way before it was called that, and something about the software just puts me off. Perhaps I could get past that if I stuck with it, bu…
I liked it many years ago but when I noticed how slow and heavy my code was I left it. It manages to be slower than Python. Perhaps the Chez Scheme rewrite helped with that but now if I need a Lisp I have Common Lisp which is super fast and lightweight enough.
https://lambdaland.org/posts/2023-12-20_functional_langauge_...
https://lambdaland.org/posts/2024-09-27_threaded_interpreter...
Matthew Flatt, the Racket lead, says that Racket’s performance should be fairly comparable to Java, much faster than Python, slower than Julia/Rust/etc. That’s been a helpful model for me: if Java is fast enough, Racket will do fine.
Re: Racket v9.0
#108Earlier quoted context omitted.
What kinds of things do you write in Racket? I’m a clojure dev and so I’m a big fan of lisp. I’m just curious what kinds of projects you would use Racket for
i'm also curious.. do you use clojure because of jvm? i want to learn some kinda lisp, but there are so many choices. why not just common lisp or the one with emacs.
clojure works on the jvm, or without (babashka, technically graalvm i think), or in the browser (clojurescript). i think there is a .net implementation, not sure.
then you get clojure inspired languages that are quick to learn if you know clojure (janet, C runtime, fennel on the Lua platform).
And soon a clojure optimized for integration with C++ (Jank).
Bonus, clojure is relatively simple language. (it's a small language where most things are immutable, with a small-ish set of functions operating on a small-ish set of provided data structures).
common lisp is cool but looks way (waaay) more complex. so you will need to invest way more to learn it (might be worth it, dont know). i technically "learned" it but never felt the impetus to use it.
i occasionally do some stuff in emacs lisp. but i'll mainly be running clojure & babashka (and rust). currently refreshing my ocaml, and learning ada (this thing is great, should have learned it a long time ago). also nim.
Re: Racket v9.0
#109Re: Racket v9.0
#110Speaking of lisp, if I wanted to use a lisp nowadays, what would be the best choice, common lisp, clojure or some scheme implementation?
More seriously, there is no one ‘best lisp’.
What you use depends on the needs of the project. That might mean Racket, Guile, Clojure, SBCL or something else. It all depends on what you need to do.