It is very interesting question. There is another one:
So, It seems more clear to use inheritance closure.
I think " export, dual* of import" is very error prone method for dsl.
I would be happy if there is a way to escape any export\import keyword.
class SomeComponent extends DSL{
//Any exports\imports must be implicit
//It's possible by writing type aliases,
//but any new type we must add to "Dsl class" manualy
}
or
doSql{
//Any exports\imports must be implicit
//now it is imposible ((
}
See: Implicit Function Types - #38 by AMatveev
Etc.