translate_to_pidgin source must construct a valid Pidgin value (Repr.t) from a source. Error handling is left to the consumer, even though, in an ideal world, we would want to be able to fill any value to Pidgin constructors.
translate_from_pidgin repr must construct a valid expression from Repr.t to the target. Error handling is left to the consumer, even though, in an ideal world, we would want to be able to fill any value to the target constructors.