6 ms·
An API would do the job just fine.
by altrego99 11y ago
An API would do the job just fine.
- sklogic 11y agoAPI leaks abstractions and does not provide any domain-specific semantics. Imagine an API for, say, parsing. A DSL would have a nice BNF-like syntax and abstract any implementation details away. API - well, you won't ever get any further than Parsec, and Parsec is awful.
- eutectic 11y agoWhat do you have against parsec?
- sklogic 11y agoSame thing - leaky abstraction. Too much host language semantics leaking into the problem domain. It's not a pure BNF, and therefore it's faulty by design.
- TeMPOraL 11y ago> A DSL would have a nice BNF-like syntax and abstract any implementation details away. Use powerful enough language. https://en.wikibooks.org/wiki/Common_Lisp/External_libraries/CL-YACC https://en.wikibooks.org/wiki/Common_Lisp/External_libraries... Here, you can pretty much write out your BNF directly and get a parser out of it.
- sklogic 11y agoThat's exactly the approach I'm preaching. I've built entire layers of languages above Lisp using this kind of eDSLs: https://github.com/combinatorylogic/mbase https://github.com/combinatorylogic/mbase So, yes, as long as you have a sufficiently powerful meta-language, eDSL is almost always better than a library. But yet, if your language is not powerful at all, DSLs (standalone) are still better then the libraries, they're just a bit more complicated to implement.