Why aren't you programming in racket Jow Forums?

Why aren't you programming in racket Jow Forums?

>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.

Attached: images.jpg (433x116, 8K)

Other urls found in this thread:

youtube.com/watch?v=6pMyhrDcMzw
en.wikipedia.org/wiki/Abstract_syntax_tree
youtu.be/TfehOLha-18
twitter.com/NSFWRedditImage

silent errors because of passing atom instead of list of single atom always makes me flip the table

doesnt racket also have namespaces? in a lisp thats pretty fucking insane.

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

>Why aren't you programming in racket Jow Forums?
The logo is literally (((Racket)))

They're not even hiding it anymore.

but OP, I am.
yes

not statically typed

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.

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.

Reminds me of Dr scheme

dr. racket you mean?

>a statically typed Lisp
>all your homoiconicity is suddenly useless

Bravo, Jow Forums.
Retarded as usual.

>(((Lisp))) isn't for goyim.
;_;

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.

Retard.

>all your homoiconicity is suddenly useless
good
friendly reminder to separate your data from logic

At that level of support, why wouldn't I program in my own, better designed language instead?

>(((Racket)))

I haven't played much with any Lisp. At which point do static types interfere with homoiconicity? A short code example would be great.

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.

>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?

Thats what came to mind to me, lisp and dr racket

>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.

(
(I)(n)(s)(t)(a)(l)(l)( )(G)(e)(n)(t)(o)(o)
)

>(((Lisp))) isn't for goyim.
You cannot into Jow Forums mems, sry.

Thanks for the explanation.

Anyone used racket with modern opengl (4.0+)? I've seen that std. lib does have some bindings, but the are to old version.

Because I'm coding in golang, rust, or something else of the edgy coding hipster variety.

Opinion discarded.

Attached: 8wcOrmw.png (960x776, 881K)

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 ?

The world doesn't need another meme language.

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

>Macros are just functions that are called at compile time

>lisp
>compile time

nigga, wut?

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?

>state-of-the-art nanopass compiler that generates extremely fast native code
Which begs the question, why aren't you programming in Chez Scheme?

Attached: R-6336169-1417198973-5458.jpeg.jpg (586x579, 101K)

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

>another meme language
>the second oldest real programming langauge

Don't know..
Maybe this?
>en.wikipedia.org/wiki/Abstract_syntax_tree

Nah.

youtu.be/TfehOLha-18
Around 8:20

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.

>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.

>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.

>functional programming is lambda expressions

With a combination of lambdas, combinators and auto keyword you can use latest standarts of c++ as an almost full functional programming language

Wow , you are one ignorant motherfucker.

>(((Racket)))

C++ lambda isn't even a proper lambda.

>100mb of memory usage for most basic programs.
Why don't I just use Java?

Isn't (((clojure))) better because you have more libraries?

>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.

From what little I've read, people who have used Racket and Clojure prefer Racket because Clojure's stacktraces are atrocious.

>well designed language
>all those parens
user...

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.