badkins
2022-7-6 13:19:59

I’m interested also - please post a link when you write the blog post :)


hj93
2022-7-6 18:03:15

why should I choose Racket instead of Common Lisp? :slightly_smiling_face:


spdegabrielle
2022-7-6 18:05:58

Sure I could say racket is a modern lisp and a descendent of scheme with arguable the most advanced meta programming available, but I really just stay for the people :blush:


spdegabrielle
2022-7-6 18:07:05

spdegabrielle
2022-7-6 18:07:24

but tell us what you want to achieve


spdegabrielle
2022-7-6 18:07:44

Plenty of common lispers use racket


spdegabrielle
2022-7-6 18:08:04

It’s not you have to choose


spdegabrielle
2022-7-6 18:08:15

And Common Lisp is good too


massung
2022-7-6 18:31:28

Mostly comes down to personal aesthetics IMO. I use both and love them both. I generally lean more heavily on racket these days just due to the infrastructure, community (ie this slack group), and a few other things.

The important thing to remember about lisp is that - like forth and smalltalk - you are essentially picking an implementation that isn’t really compatible with the others because the standard is really just the basics and doesn’t include all the batteries.

So pick whatever has the most batteries you need at the start and which has the personal aesthetics you prefer (that’s a CL vs Scheme thing and not CL vs racket).


gmauer
2022-7-6 18:33:30

I was always under the impression that the big selling point is that it makes it dirt simple to write your own languages and to interop between them and other racket programs


massung
2022-7-6 18:35:24

That’s certainly rackets unique selling point. But when comparing to CL my guess is that wasn’t a factor in the original question (assuming the question genuine)


spdegabrielle
2022-7-6 18:47:20

Some people just want grow as developers, and a lisp(common, scheme or racket) is often recommended as a good way to do this. I should also mention that Clojure should not be ruled out if you want to learn a lisp.

That said, it is hard to beat Rackets books and documentation if you are new to programming or an experienced developer. The IDE(DrRacket) is especially kind to beginners. You won’t find an easier to install language.


sw5355700
2022-7-6 19:50:43

i would choose racket over common lisp because racket doesn’t do anything obviously strange.


sw5355700
2022-7-6 19:51:33

the first oddity that you’ll see in cl are the two standard namespaces. one for functions and the other for non-functions.


sw5355700
2022-7-6 19:52:28

the deeper you dig into cl the more obtusities like this will show up.


sw5355700
2022-7-6 19:52:54

variables have hidden properties that you can use to store extra values. for example.


sarna.dev
2022-7-6 19:56:00

sw5355700
2022-7-6 20:15:43

for studying Julia is an interesting lisp that’s a good starting point.


massung
2022-7-6 20:29:00

@sw5355700, what’s something in CL that’s “obviously strange” in comparison to Racket?


massung
2022-7-6 20:29:43

Generally speaking, I like CL (specifically SBCL or LispWorks) considerably more than most Scheme implementations.


spdegabrielle
2022-7-6 20:29:49

How is Julia a lisp?


massung
2022-7-6 20:31:52

While not homoiconic, Julia does have macros: https://jkrumbiegel.com/pages/2021-06-07-macros-for-beginners/\|https://jkrumbiegel.com/pages/2021-06-07-macros-for-beginners/. Certainly not the same, though. I - personally - would need to squint really hard to make Julia a Lisp :)


spdegabrielle
2022-7-6 20:35:14

Elixir has hygienic macros


spdegabrielle
2022-7-6 20:35:34

(I only recently found out)


massung
2022-7-6 20:36:16

I did Erlang work professionally for a bit an enjoyed it. Friends try and get me into Elixir, but I haven’t really tried it much yet. I like Ruby, though, so maybe it’d be nice.


gmauer
2022-7-6 20:39:55

ehh, I found its handling of generic collections pretty strange. That’s my biggest complaint though


gmauer
2022-7-6 20:40:19

I imagine CL has the same problems, elisp certainly does (and way worse)


sw5355700
2022-7-6 20:45:26

julia uses syntax but it’s ast is just a lisp




sw5355700
2022-7-6 20:55:35

literally just cl works this way.


sw5355700
2022-7-6 20:55:53

and to no obvious benefit.


massung
2022-7-6 20:57:39

All those make sense to me, I guess. set is for runtime use. setf is for macro definitions so that defsetf is possible. setq is just the compile-time version of set, and psetq - I admit - is dumb and likely just there for historical reasons (likely there was a single implementation that had it and to keep backwards compat with exiting code it was grandfathered into the spec).


massung
2022-7-6 20:58:49

I will admit that sometimes the naming of various CL functions can be weird. rplaca and rplacd come to mind immediately. But every time I’ve wondered about the use of something in the spec, I’ve eventually needed it.


sw5355700
2022-7-6 20:59:00

that looks absolutely absurd compared to racket which needs none of that.


massung
2022-7-6 20:59:00

And CLOS is just awesome (IMO).


sw5355700
2022-7-6 20:59:53

the take away is there’s something fundamentally wrong with the design of cl.


massung
2022-7-6 21:03:46

Well, I’m happy to debate the finer points of any language/implementation details. Nothing is perfect as they are all made by people. And anything that’s been around for a long time has some serious warts. Racket has many of them, too.

But given that CL has been used quite successfully by many companies and individuals for many decades I think shows that there isn’t something “fundamentally wrong” with it. But the warts it does have may just rub you the wrong way, and I can get that.


massung
2022-7-6 21:08:15

Another way to look at it is like everything else, we all stand on the shoulders of the giants that came before. The real advantage Racket has over any CL implementation is that Racket is still evolving and improving. And - while rare - the move to Racket CS showed that the Racket team is even willing to break some backwards compat if they feel it’s in the best interests of all moving forward. Sadly, CL is pretty much stuck and I don’t think it’ll ever get revised.


sw5355700
2022-7-6 22:28:18

racket doesn’t have generic collections in the base language.


ben
2022-7-7 03:27:32

Hey everyone, Stephen & I are running another summer event: https://racket.discourse.group/t/summer-lang-party Make a #lang , win a prize!