>Extremely clean and well designed language >Easily allows you to design DSL's >Bytecode with JIT and still fairly fast >Functional rendering engine that is capable of saturating the graphics card (high throughput!) >Very good module system >Easily distributable and weighing in at about 15mb with about 100mb of memory usage for most basic programs.
You pay this cost so you can keep the compiler at runtime and generate new code on the fly.
>Very good webserver framework with support for continuation or non-continuation based setups >Getting it's upgrade next month to start the transition to Racket-on-Chez which will place Racket's backend onto an objectively state-of-the-art nanopass compiler that generates extremely fast native code. >Gives you access to tons of hardcore and amazing computer literature like PAIP, SCIP, LiSP, and On Lisp
Racket is the future and if you can't see that from your nodeJS tinted goggles than you shouldn't be programming in the first place.
silent errors because of passing atom instead of list of single atom always makes me flip the table
Sebastian Smith
doesnt racket also have namespaces? in a lisp thats pretty fucking insane.
Cooper Cox
you can't make money with it no real world applications it's dead since 23 years it will stay that for the next 23 years (actually forever)
garbage that nobody needs
Jackson Richardson
>Why aren't you programming in racket Jow Forums? The logo is literally (((Racket)))
They're not even hiding it anymore.
Chase Cruz
but OP, I am. yes
Cooper Jones
not statically typed
Austin Cruz
Some guy made a DSL called Pollen which is a language purely for publishing books as websites. The language generates beautiful looking sites and he now makes money from several of the books he's self published.
I'm not saying you're going to get a corporate job with Racket, but if you have an entrepreneur's spirit then Racket will let you design custom tools/languages extremely easily to perform your work exactly how you want to.
If that's not what programming should be about then I don't get it. Racket is the essence of clean utility that you just can't get by bootstrapping a huge stack of other libraries together. If he tried to do the same thing in nodeJS it'd be a monstrosity instead of a syntactically pleasing solution.
(((Lisp))) isn't for goyim.
Noice.
Nathan Baker
It can be and that's the beauty of it. The base language is powerful enough to express Typed Racket which gives you a nice speed increase and static typing.
Joshua Rogers
Reminds me of Dr scheme
Brody Murphy
dr. racket you mean?
Kayden Allen
>a statically typed Lisp >all your homoiconicity is suddenly useless
Bravo, Jow Forums. Retarded as usual.
Jaxon Lee
>(((Lisp))) isn't for goyim. ;_;
Adrian Johnson
I'm not saying Racket should be statically typed, I'm answering the question: "Why are you not using this?"
Go back to whatever grade they teach reading comprehension in.
Easton Johnson
Retard.
Ethan Smith
>all your homoiconicity is suddenly useless good friendly reminder to separate your data from logic
Hunter Lopez
At that level of support, why wouldn't I program in my own, better designed language instead?
Evan Collins
>(((Racket)))
Ayden Walker
I haven't played much with any Lisp. At which point do static types interfere with homoiconicity? A short code example would be great.
Lincoln Reed
Let's say you define a macro called unless: (defmacro unless (cond forms) `(if (not ,cond) ,@forms)) Macros are just functions that are called at compile time, and their result is inserted into the code. That ` is called quasiquote and it acts as a kind of template, , and ,@ are used to specify which parts of it you want evaluated. If you write: (unless (or (> 0 1) (= 0 0)) 5 10) it gets expanded to: (if (not (or (> 0 1) (= 0 0))) 5 10) And then evaluated normally. But what is the type of cond inside unless? It's a list that contains both a symbol and two other lists, which then contain symbols and integers. Expressing that in terms of any type system is very cumbersome, and there's no reason it couldn't be more complicated, having several nested lists with different atom types inside. At this point you just have to have a single algebraic type where Lisp types are values, i.e. you reinvent dynamic typying. Even if you separate functions from macros, one of the defining features of Lisp is that the entire language is available at compile time. That would render macros unable to call normal functions, or do it in a very bothersome way, etc. It just doesn't work, not because it's impossible per se, but because it makes a lot of things Lispers are normally used to practically infeasible.
Easton Davis
>Even if you separate functions from macros, one of the defining features of Lisp is that the entire language is available at compile time. That would render macros unable to call normal functions, or do it in a very bothersome way, etc. Couldn't you type check only after macro expansion? First expand macros like in regular Lisp (running regular functions with dynamic typing), then type check the resulting code. Or do you put this in the bothersome category?
Adam Collins
Thats what came to mind to me, lisp and dr racket
Jack Martin
>Or do you put this in the bothersome category Yes, because then if the macro produces a form with type error (not because it's written badly, but because the arguments passed in were bad) you would have to debug it instead of the macro that it came from. It would turn into C++ templates 2.0.
Josiah Hughes
( (I)(n)(s)(t)(a)(l)(l)( )(G)(e)(n)(t)(o)(o) )
Joshua Wright
>(((Lisp))) isn't for goyim. You cannot into Jow Forums mems, sry.
Owen Fisher
Thanks for the explanation.
Sebastian Morales
Anyone used racket with modern opengl (4.0+)? I've seen that std. lib does have some bindings, but the are to old version.
Isaac Peterson
Because I'm coding in golang, rust, or something else of the edgy coding hipster variety.
This thread couldn't have come at a better time. I've been thinking about picking one among chicken or racket Chicken pros - Small language, great community Racket pros - A large number of libs. The option to delve into typed racket etc. to truly understand programming language theory. What else am I missing ?
Logan Miller
The world doesn't need another meme language.
Samuel Ortiz
Chicken generates very good C code and is among the faster scheme implementations available. Their 'eggs' based library system is also very good. Racket has way better IDE (Dr. racket), better documentation, great learning material and also has much, much wider scope. The macro and DSL system is extremely sophisticated, and you can use it to make non-paren languages that compile to racket forms and can interop with regular racket code. They are also getting a chez scheme based backend which should speed things up inthe future. Also has tons of libraries, including GUI and graphics in the base std lib. Go with racket I'd say
Brandon Rogers
>Macros are just functions that are called at compile time
>lisp >compile time
nigga, wut?
Oliver Brown
Yeah, I was leaning towards racket. I saw a talk by a guy in which the ide showed a crazy graph to show an error. What exactly was I looking at?
Connor Phillips
>state-of-the-art nanopass compiler that generates extremely fast native code Which begs the question, why aren't you programming in Chez Scheme?
Lisp program passes through 3 phases in its lifetime. First, flat Lisp source code is transformed into Lisp forms (read phase), then macros are expanded and code usually compiled to machine code or bytecode (compile phase) and then finally executed (runtime phase). I know it may blow your mind, but you can do it all from REPL or configure the environment to do it automatically for you when it sees you changed the code too. See youtube.com/watch?v=6pMyhrDcMzw
Jack Moore
>another meme language >the second oldest real programming langauge
I wrote a language interpreter in Racket and haven't found a good reason to use it since for anything other than toy projects.
It also hasn't really broken into any niches other than education.
Colton Perry
>racket (yeah (because (fuck human readable) syntax) (sure (user))))
If i really wanted the benefits of functional programming, i'd better go haskell, you can actually read it at very least. Or, you know, use lambda expressions in any modern general purpose language.
Anthony Hughes
>Why aren't you programming in racket Jow Forums? Because I can't think of any real world project where any lisp would ever be on a list of languages to consider. One of the big problems is people wanting to try X language that should have never been used for anything other than a personal learning experiment.
Cooper Lee
>functional programming is lambda expressions
Jacob Jones
With a combination of lambdas, combinators and auto keyword you can use latest standarts of c++ as an almost full functional programming language
Josiah Williams
Wow , you are one ignorant motherfucker.
John Wood
>(((Racket)))
Leo Cooper
C++ lambda isn't even a proper lambda.
Jace Kelly
>100mb of memory usage for most basic programs. Why don't I just use Java?
Grayson Jenkins
Isn't (((clojure))) better because you have more libraries?
Parker Bennett
>Why aren't you programming in racket Jow Forums? I came from CL.
CL > Scheme > Clojure > Racket.
it doesn't actually offer anything over any of these other Lisp dialects that is particularly special. In fact, all of the things you mention here are things it simply borrows from other dialects.
Hunter Reed
From what little I've read, people who have used Racket and Clojure prefer Racket because Clojure's stacktraces are atrocious.
Jayden Rodriguez
>well designed language >all those parens user...
Alexander Long
Mostly Java interop so I guess if you know Java then go for it.
Because that 100mb is with a crap ton of GTK libraries linked for using the gui library. If you weren't using the gui it'd hardly be near the memory usage of Java.