Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

We use Racket to teach functional programming in the first semester of the first year at my uni and we never have such horrible feedback from students. We use it again in a compilation course in the first semester of the third year of the same curriculum and it works well. Could you elaborate?


Not the querient, but my first experience with Racket was something to the effect of:

  > (cons 'foo 'bar)
  ! error: bar is not a list
There were several other condescendingly-reported gross implementation defects like this, most damningly a inability to define macros, which meant that Racket is not in fact a LISP, and the syntactic homogenity that makes LISPs annoying to work with (at the benfit of being able to generate and rewrite arbitrary program fragments on demand) serves no purpose whatsoever.

I later found out that this was apparently due to having been provided with a "teaching" version of the interpreter intended for beginning students (who presuably don't know any better), which makes it even worse.

I would definitely characterize my attitude toward Racket as "hate", and if acbart made the same mistake my (generally quite reasonable and competent) CS professor did, I wouldn't be surprised if their students felt likewise.


It does sound like you were expecting a full Lisp and instead were greeted with one of the Beginner Languages, intended to teach first time programmers in a very structured way. See https://docs.racket-lang.org/drracket/htdp-langs.html

The example that you give is not an error in full Racket:

  Welcome to DrRacket, version 6.12 [3m].
  Language: racket, with debugging.
  > (cons 'foo 'bar)
  '(foo . bar)
Similarly, full Racket has multiple, powerful macro systems, and more besides, deliberately excluded from the Teaching Languages.

* * *

I'm not an academic, but the community and core Racket team are incredibly supportive, and any Comp Sci professor running into difficulties teaching a Racket-based course can easily access plenty of support and guidance, starting by contacting the user mailing list.


> I later found out that this was apparently due to having been provided with a "teaching" version of the interpreter intended for beginning students (who presuably don't know any better), which makes it even worse.

I think you still misunderstand; racket doesn't have different interpreter/compiler versions with different language features, racket code explicitly can request different languages via a language directive (I think there is a corresponding UI option in the Dr. Racket UI.) Among the preinstalled options are a series of teaching languages designed to accompany the textbook How to Design Programs, among others.


That's unfortunate. Perhaps people should be informed about `#lang racket` first, but I'm not sure how you missed this. It's fairly easy to see in the documentation.


As you point out: Racket is different from the teaching languages.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: