diff --git a/lib/GEODE/Metadata/Types.hs b/lib/GEODE/Metadata/Types.hs index 0999f7dd27b918138673f3a04cb55751d0ecf5da..0a038b2d243c3ceb95abec4d4ba6f76e11970be1 100644 --- a/lib/GEODE/Metadata/Types.hs +++ b/lib/GEODE/Metadata/Types.hs @@ -9,8 +9,8 @@ import Data.Aeson.KeyMap as Object (union) import Data.Csv (FromNamedRecord(..), ToNamedRecord(..)) import Data.HashMap.Strict as Hash (union) -infixr 9 @ -infixr 9 :@: +infixl 9 @ +infixl 9 :@: data a @ b = a :@: b class Has a b where @@ -19,11 +19,11 @@ class Has a b where instance Has a a where get = id -instance Has a c => Has a (b @ c) where - get (_ :@: c) = get c +instance Has a b => Has a (b @ c) where + get (b :@: _) = get b -instance {-# OVERLAPS #-} Has a (a @ b) where - get (a :@: _) = a +instance {-# OVERLAPS #-} Has b (a @ b) where + get (_ :@: b) = b instance (ToNamedRecord a, ToNamedRecord b) => ToNamedRecord (a @ b) where toNamedRecord (a :@: b) = Hash.union (toNamedRecord a) (toNamedRecord b)