-
Notifications
You must be signed in to change notification settings - Fork 16
Open
Description
Adding RULES would be great, but GHC isn't happy. E.g.:
{-# RULES "set/set" forall a b field book. set field a (set field b book) = set field a book
#-}
/home/jkarni/Documents/progs/bookkeeper/src/Bookkeeper.hs:49:68: error:
• Couldn't match type ‘Data.Type.Map.Nub
((Data.Type.Set.Sort
(Data.Type.Set.Filter
'Data.Type.Set.FMin
(field 'Data.Type.Map.:-> val1)
(Data.Type.Map.Nub
(Data.Type.Set.Sort (old Data.Type.Map.:\ field))))
Data.Type.Set.:++ '[field 'Data.Type.Map.:-> val1])
Data.Type.Set.:++ Data.Type.Set.Sort
(Data.Type.Set.Filter
'Data.Type.Set.FMax
(field 'Data.Type.Map.:-> val1)
(Data.Type.Map.Nub
(Data.Type.Set.Sort
(old Data.Type.Map.:\ field)))))’
with ‘Data.Type.Map.Nub
((Data.Type.Set.Sort
(Data.Type.Set.Filter
'Data.Type.Set.FMin
(field 'Data.Type.Map.:-> val1)
(Data.Type.Map.Nub
(Data.Type.Set.Sort
(Data.Type.Map.Nub
((Data.Type.Set.Sort
(Data.Type.Set.Filter
'Data.Type.Set.FMin
(field 'Data.Type.Map.:-> val)
(Data.Type.Map.Nub
(Data.Type.Set.Sort
(old Data.Type.Map.:\ field))))
Data.Type.Set.:++ '[field 'Data.Type.Map.:-> val])
Data.Type.Set.:++ Data.Type.Set.Sort
(Data.Type.Set.Filter
'Data.Type.Set.FMax
(field 'Data.Type.Map.:-> val)
(Data.Type.Map.Nub
(Data.Type.Set.Sort
(old
Data.Type.Map.:\ field)))))
Data.Type.Map.:\ field))))
Data.Type.Set.:++ '[field 'Data.Type.Map.:-> val1])
Data.Type.Set.:++ Data.Type.Set.Sort
(Data.Type.Set.Filter
'Data.Type.Set.FMax
(field 'Data.Type.Map.:-> val1)
(Data.Type.Map.Nub
(Data.Type.Set.Sort
(Data.Type.Map.Nub
((Data.Type.Set.Sort
(Data.Type.Set.Filter
'Data.Type.Set.FMin
(field 'Data.Type.Map.:-> val)
(Data.Type.Map.Nub
(Data.Type.Set.Sort
(old
Data.Type.Map.:\ field))))
Data.Type.Set.:++ '[field
'Data.Type.Map.:-> val])
Data.Type.Set.:++ Data.Type.Set.Sort
(Data.Type.Set.Filter
'Data.Type.Set.FMax
(field
'Data.Type.Map.:-> val)
(Data.Type.Map.Nub
(Data.Type.Set.Sort
(old
Data.Type.Map.:\ field)))))
Data.Type.Map.:\ field)))))’
arising from a use of ‘set’
NB: ‘Data.Type.Map.Nub’ is a type function, and may not be injective
• In the expression: set field a book
When checking the transformation rule "set/set"
• Relevant bindings include
a :: val1 (bound at src/Bookkeeper.hs:49:19)
b :: val (bound at src/Bookkeeper.hs:49:21)
field :: Key field (bound at src/Bookkeeper.hs:49:23)
book :: Book' old (bound at src/Bookkeeper.hs:49:29)
Metadata
Metadata
Assignees
Labels
No labels