{-# LANGUAGE TypeFamilies #-}

-- In an ideal world, this would work. But, GHC doesn't implement
-- a full infinite-type unifier, so it can't figure out that F b [b] Bool
-- can safely reduce to Bool.

module Overlap15 where

import Data.Proxy

type family F a b c where
  F a a a    = Int
  F b c Bool = Bool

foo :: Proxy b -> F b [b] Bool
foo _ = False

