pub fn with_theme<P>( program: P, f: impl Fn(&<P as Program>::State, Id) -> <P as Program>::Theme, ) -> impl Program<State = <P as Program>::State, Message = <P as Program>::Message, Theme = <P as Program>::Theme>where P: Program,