1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | error: • Couldn't match type ‘State m0’ with ‘State m’ Expected type: TChan ServiceRequest -> TChan Frame -> State m Idle -> Either StateMachineException (State m Offered) Actual type: TChan ServiceRequest -> TChan Frame -> State m0 Idle -> Either StateMachineException (State m0 Offered) NB: ‘State’ is a type function, and may not be injective The type variable ‘m0’ is ambiguous • In the ambiguity check for ‘offerServiceNegotiation’ To defer the ambiguity check to use sites, enable AllowAmbiguousTypes In the type signature: offerServiceNegotiation :: (ConnectionSetup m, MonadIO m) => TChan ServiceRequest -> TChan Frame -> State m Idle -> Either StateMachineException (State m Offered) |