Partially answering my own question - it seems like I want "type directed translation" as per section 8 of "Practical Type Inference for Arbitrary Ranked Types". Does anyone know of a presentation with a simpler type language? Thanks again Stephen