была же какая-то либа, которая позволяла указывать имена полей в джейсоне в определении типа, чтобы не писать такие инстансы?
то есть что-то вроде
data X = X
{ a :: Int <?> "a_"
}
ага, так написать нельзя, потому что ghc не может вывести KnownSymbol для такого фантома у тайпалиаса