Text this: Generic Programming for Domain Reasoners