content: {-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
  {-# LANGUAGE FlexibleInstances #-}
  
  {-  With "hugs -98 +o test.hs" gives me:
      ERROR "test.hs":8 - Cannot justify constraints in instance member binding
      *** Expression    : fromStr
      *** Type          : FromStr [a] => String -> [a]
      *** Given context : FromStr [a]
      *** Constraints   : FromStr [a]
  
      Adding the constraint "FromStr a" to the declaration of fromStr fixes 
      the problem, but that seems like it should be redundant. Removing the 
      second instance (lines 10-11) also fixes the problem, interestingly enough.
  
      /Bjorn Bringert -}
  
  -- August 08: on reflection I think a complaint about overlapping
  -- instances for line 8 is absolutely right, so I've changed this to
  -- expected-failure
  
  -- Sept 08: on further reflection (!) I'm changing it back
  -- See Note [Subtle interaction of recursion and overlap]
  -- in GHC.Tc.TyCl.Instance
  
  module ShouldCompile  where
  
  class FromStr a where
       fromStr :: String -> a
  
  typeError :: FromStr a => a -> a
  typeError t = error "type error"
  
  instance {-# OVERLAPPABLE #-} FromStr [a] where
       fromStr _ = typeError undefined  -- line 8
  
  instance {-# OVERLAPPING #-} FromStr [(String,a)] where  -- line 10
       fromStr _ = typeError undefined  -- line 11
  