How can you DRY with a programming language with out reflection?
Any programming language that does not have a suitable reflection mechanism I find seriously debilitating for rapidly changing problems.

It seems with certain languages its incredible hard or not possible to do:

 - **Convention over Configuration**
 - **Automatic Databinding**
 - **AOP / Meta programming**

with out reflection.

Some example languages that do not have some sort of programmatic reflection are:
**C, C++, Haskell, OCaml**. I'm sure there are plenty more.

To show you can example of DRY (Don't Repeat Yourself) being violated by most of these languages is when you have to write Unit Tests. You almost always need to register your test cases in these languages outside of where you define the test. 

How do programmers of these languages mitigate this problem?
How can you DRY with a programming language with out reflection?
===

Any programming language that does not have a suitable reflection mechanism I find seriously debilitating for rapidly changing problems.

It seems with certain languages its incredible hard or not possible to do:

 - **Convention over Configuration**
 - **Automatic Databinding**
 - **AOP / Meta programming**

with out reflection.

Some example languages that do not have some sort of programmatic reflection are:
**C, C++, Haskell, OCaml**. I'm sure there are plenty more.

To show you can example of DRY (Don't Repeat Yourself) being violated by most of these languages is when you have to write Unit Tests. You almost always need to register your test cases in these languages outside of where you define the test. 

How do programmers of these languages mitigate this problem?