fun x fn -> fun y => fun x gn y