2 ms·
Always been curious, how do people decide between racket vs. scheme vs. common lisp anyway?
by lukeplato 6y ago
Always been curious, how do people decide between racket vs. scheme vs. common lisp anyway?
- neilv 6y agoFirst, Racket was originally called PLT Scheme, but then added a lot of stuff, and then broke some standards compatibility. (I'm currently interested in moving back to more-portable Scheme, possibly using Racket as my default Scheme implementation.) There are huge differences between Scheme and CL, and you can usually tell when, say, a person good with CL is writing Scheme code. (Disclaimer: I've used both languages professionally, and am a Scheme expert, but am a CL novice, other than my experience using various Lisps.) One of the differences is size: You can sit down in half an hour and skim through the R5RS paper (skipping the scary sections on formal semantics and on first-class continuations), and be ready to sit in front of Scheme and start programming, even if you initially won't be writing idiomatic Scheme. Though you do need to add a lot more library to Scheme to do real-world things, the core language is small and elegant. There's also noticeably different idiomatic programming. An idiomatic Scheme programmer might do things like avoid mutations, leverage tail call optimization, use only hygienic macros (syntax extension) and maybe fancy tools for that (e.g., `syntax-parse`), not use dynamic capabilities of the language so much, never go and optimize by looking at native code generation (though Racket now has tools for looking at bytecode/IR), and use simpler language features for many things (not know and leverage the CLOS MOP, nor make complicated `LOOP` uses). If I was doing a startup with a Lisp for my launch, I'd personally use a Scheme (maybe Racket), because I happen to already know all the big&small things I need to DIY and manage, to make it viable for things like Web startups. For CL, those things would be different, but I think also doable and more proven already. I do think I could get a team up to speed on Scheme faster than CL, because I can say "This week, use the core language, plus these packages, and then next week there's some non-obvious idiomatic stuff that I'd like to propose we learn, but I have to explain it, because it's not in any book I know of."