@@ -72,6 +72,18 @@ pluginSolve () given derived wanted =
72 -- For the sake of debugging
72 -- For the sake of debugging
73 tcPluginIO $ putStrLn "Running Set equality plugin"
73 tcPluginIO $ putStrLn "Running Set equality plugin"
74 return $ TcPluginOk solved []
74 return $ TcPluginOk solved []
76+-- Possible eqations for the solver
77+-- Union a b ~ a => b ~ '[]
78+-- Union a b ~ b => a ~ '[]
80+-- Union (Union a b) c ~ d => Union a (Union b c) ~ d
81+-- Union '[] a ~ b => a ~ b
82+-- Union a '[] ~ b => a ~ b
83+-- Union a a ~ b => a ~ b (can do in a reduce phases that looks through a tree of union terms..)
85+-- Reqires an `ordering'
86+-- Union a b ~ c => Union b a ~ c [for the purpose of normalisation]
76-- Pretty print constraints
88-- Pretty print constraints
77ppCts [] = text "(empty)"
89ppCts [] = text "(empty)"
@@ -112,4 +124,4 @@ findSetEquality (ct : xs) = let x = (do (Nominal,t1,t2) <- getEqPredTys_maybe (c
112 Nothing -> findSetEquality xs
124 Nothing -> findSetEquality xs
114pluginStop :: () -> TcPluginM ()
126pluginStop :: () -> TcPluginM ()
115−pluginStop _ = return ()
127+pluginStop _ = return ()