class Decode c a | c -> a where decode :: c -> Decoder a type Decoder a = Reader ( Map Literal Bool ) a instance ( Decode c a ) => Decode [c] [a] where decode = mapM decode