Isn't it the same when we create a Domain-Specific Language, because it's easier to describe what we want to achieve using the specific terms and concepts of it?
Now reading again about the term, I use a broad definition of DSL's, where it's perfectly valid to call a bunch of functions, some pattern matching and a single expression evaluator function a DSL, and it perfectly covers the above.
If so, I do a lot of these. Even more, I could make a bold hypothesis there that if there's a module in a program that exports only one symbol and has a lot of code inside, chances are you'll find a metalinguistic abstraction there, because it looks to me like a natural way of simplifying complicated problems into a simple interface (it turns "what do you want to do" into "how would I go about doing that, specifically"), while keeping low the amount of code that actually does things.
Happy New Year!
Isn't it the same when we create a Domain-Specific Language, because it's easier to describe what we want to achieve using the specific terms and concepts of it?
Now reading again about the term, I use a broad definition of DSL's, where it's perfectly valid to call a bunch of functions, some pattern matching and a single expression evaluator function a DSL, and it perfectly covers the above.
If so, I do a lot of these. Even more, I could make a bold hypothesis there that if there's a module in a program that exports only one symbol and has a lot of code inside, chances are you'll find a metalinguistic abstraction there, because it looks to me like a natural way of simplifying complicated problems into a simple interface (it turns "what do you want to do" into "how would I go about doing that, specifically"), while keeping low the amount of code that actually does things.