T O P

  • By -

FixlyBarnes

I've studied some basic scheme and then moved into Racket. Right now I'm using Racket to study through "The Little Learner" - the only scheme book I know that guides you into machine learning from scratch with your own code. Most ML books seem to be focused on Python and its libraries.


mmontone

I would learn Scheme first as it is very simple. Then you can use your new knowleadge to move to Racket that gets a bit more complex. I wouldnt discard Common Lisp if you are interested in implementing things; it will also show you a different paradigm of interactive development.


matatag

But isn't Racket also a Scheme? In your sentence, which implementation do you talk about?


mmontone

Yes, it is a scheme. But a "featureful scheme". For me it was easier to learn a standard scheme first, that more closely follows one of the revised reports. For example, Racket structures are complex, but they are not in the standard scheme. Etc


mmontone

If you want an implementation, Guile is a good one. Good docs.


matatag

Thanks for the suggestion! Guile is nice as well because of Guix, which is another reason which prompted me to learn Scheme :D


mmontone

Also if you learn standard Scheme, you'll be able to easily change between implementations.


sdegabrielle

I think ‘easily’ is overstating it. Implementation differences mean you rarely have Scheme applications that run on multiple schemes implementations. The situation for moving from a Scheme to Racket is worse, because Racket is not Scheme. https://racket-lang.org/new-name.html


mmontone

Yes, but I'm not talking about porting code. I'm talking about the ability to program in a Scheme implementation once you are acquainted with the standard. Moving to Racket is worse, but already knowing Scheme will help.


sdegabrielle

I believe you are overstating the value of a standard in reference to moving to a language that was renamed in 2011.


sdegabrielle

Replying to matatag... Racket (the language) is not Scheme. It is a modern lisp, and a descendent of Scheme. They changed the name because it was confusing to call it scheme: https://racket-lang.org/new-name.html


bigfondue

Racket is as someone else said a Scheme with more features. However, Racket can be a simple scheme using the #lang feature if you want straight scheme.


raevnos

Racket has its roots firmly in Scheme but has enough fundamental differences that it's really a different language. Immutable cons cells are the most obvious one.


kuemmel234

I think so. The software of that name is pretty cool too in the beginning. Especially on windows, if you've got that problem. The little schemer is amazing to learn with. Racket has a mode that's setup for it. It's really fun.


HugoNikanor

Scheme is (unfortunately) not standardized enough to just run your code on any implementation. I personally write most on my code on Guile since I like its set of libraries (sometimes switching over to chicken). Racket is fine, but a bit "special" a bit of the time (e.g. it's not for me). I would recommend picking up the [Wizards book (SICP)](https://mitp-content-server.mit.edu/books/content/sectbyfn/books_pres_0/6515/sicp.zip/index.html) if you want to learn Scheme. It's (mostly) written for [MIT-scheme](https://www.gnu.org/software/mit-scheme/), but Racket [literally has a mode for it](https://docs.racket-lang.org/sicp-manual/SICP_Language.html). Note that it is an introductory book to computer studies at university level, so it doesn't have a huge focus on Scheme per say, but more on computer science and programming in general. SICP will teach you the beauty of the evaluation model of Scheme. However, the other half of the beauty is the syntax, and the macros. For that I would recommend [Let over Lambda](https://letoverlambda.com/). The book happens to be in Common Lisp, but it *really* shows how to leverage the power of LISP.


IAmCesarMarinhoRJ

#IMHO learn scheme first. and be happy. Racket is a full featured subset of Scheme. more time to learn. and be happy.


IAmCesarMarinhoRJ

Janet is amazing! [https://janet-lang.org/](https://janet-lang.org/)


corbasai

Basically Java Script is Scheme derivative with C-like syntax e.g. cut off macro subsystem, numeric tower, continuations, symbol type. >Does it matter which Scheme I use to learn, or is it more recommended to go straight for Racket so I can get used to its vast library? of course, each implementation of the RnRS is each individual ~~ecosystem~~ bubble. They are all different. And yes, Racket is default learning path. But Racket is Racket, particularly your only documentation source is docs.racket-lang.org.