When is -XAllowAmbiguousTypes appropriate?

I’ve recently posted a question about syntactic-2.0 regarding the definition of share. I’ve had this working in GHC 7.6: {-# LANGUAGE GADTs, TypeOperators, FlexibleContexts #-} import Data.Syntactic import Data.Syntactic.Sugar.BindingT data Let a where Let :: Let (a :-> (a -> b) :-> Full b) share :: (Let :<: sup, sup ~ Domain b, sup ~ … Read more