nameExpr is f decl is f: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters pointer to function with parameters instance of type T (not function type) pointer to instance of type T (not function type) returning nothing returning nothing newExpr is Variable Expression: f: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters pointer to function with parameters instance of type T (not function type) pointer to instance of type T (not function type) returning nothing returning nothing alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: f: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters pointer to function with parameters instance of type T (not function type) pointer to instance of type T (not function type) returning nothing returning nothing (types: pointer to forall _0_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) function with parameters pointer to function with parameters instance of type _0_T (not function type) pointer to instance of type _0_T (not function type) returning nothing returning nothing ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is g decl is g: forall U: type with assertions ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning nothing newExpr is Variable Expression: g: forall U: type with assertions ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning nothing alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: g: forall U: type with assertions ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning nothing (types: pointer to forall _1_U: type with assertions ?=?: pointer to function with parameters pointer to instance of type _1_U (not function type) instance of type _1_U (not function type) returning instance of type _1_U (not function type) function with parameters pointer to instance of type _1_U (not function type) instance of type _1_U (not function type) returning nothing ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Variable Expression: g: forall U: type with assertions ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning nothing (types: pointer to forall _1_U: type with assertions ?=?: pointer to function with parameters pointer to instance of type _1_U (not function type) instance of type _1_U (not function type) returning instance of type _1_U (not function type) function with parameters pointer to instance of type _1_U (not function type) instance of type _1_U (not function type) returning nothing ) Environment: working on alternative: Cost ( 0, 0, 0 ): Variable Expression: f: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters pointer to function with parameters instance of type T (not function type) pointer to instance of type T (not function type) returning nothing returning nothing (types: pointer to forall _0_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) function with parameters pointer to function with parameters instance of type _0_T (not function type) pointer to instance of type _0_T (not function type) returning nothing returning nothing ) Environment: formal type is pointer to function with parameters instance of type _0_T (not function type) pointer to instance of type _0_T (not function type) returning nothing actual type is pointer to forall _1_U: type with assertions ?=?: pointer to function with parameters pointer to instance of type _1_U (not function type) instance of type _1_U (not function type) returning instance of type _1_U (not function type) function with parameters pointer to instance of type _1_U (not function type) instance of type _1_U (not function type) returning nothing Error: No reasonable alternatives for expression Applying untyped: Name: f ...to: Name: g