top | item 45154128

(no title)

skrishnamurthi | 5 months ago

Racket is a rich and powerful language, but it is also designed with certain specific ideas in mind. You can learn more about the "zen" of Racket here:

https://cs.brown.edu/~sk/Publications/Papers/Published/fffkb...

That might help you decide whether Racket will help you with what you're trying to brush up on.

discuss

order

h4ch1|5 months ago

Thank you for the response professor, really appreciate it from one of the creators of the language itself;

I did give your document a read and my (naive) understanding is you basically create DSLs for each sub-part of the problem you're trying to solve?

>A LOP-based software system consists of multiple, cooperating components, each written in domain-specific languages.

and

>cooperating multi-lingual components must respect the invariants that each participating language establishes.

So basically you're enforcing rules/checks at the language level rather than compile time?

How would you recommend a complete novice attain this sort of state of mind/thought process while working in this language? Because my thoughts go simply to creating types and enforcing type-checking coupled with pure functions to avoid successful-fail at runtime programs.

Also how would one navigate the complexity of multiple abstractions while debugging?

The paper also mentions a web-server language (footnote 27), if I use racket will I be productive "out of the box" or is the recommended path to take is writing a web server language first.

Thank you again for taking the time to respond, and please do forgive me for these naive questions.

skrishnamurthi|5 months ago

These are great questions!

Yes, what you're describing is the "extreme" version of LOP. Of course you don't have to do it that aggressively to get working code.

Two references I like to point to:

https://www.hashcollision.org/brainfudge/

https://beautifulracket.com/

They will give you a sense of how one uses LOP productively.

You do not need to write a "web server language"! To the contrary, the Web server provides several languages to give you a trade-off between ease and power in writing server-side Web applications. So you can just write regular Racket code and serve it through the server. The server also comes with some really neat, powerful primitives (orthogonal to LOP) — like `send/suspend` — that make it much easier to write server-based code.