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