Of course, anything you can create abstractions with you can create a DSL of sorts. But I think most would agree that OOP is the more natural paradigm for this.
This simple logic of fitting smaller things together to make bigger things has always delivered superior results for me regardless of the language in use.
OOP seems ass backwards to me but everyone I talk to generally doesn't have a clue how FP is different to OOP!