DS :: DS k
как написать для него инстанс в ToJSON и FromJSON,чтобы был такой результат:
encode (DS :: DS "hello") ==> "hello"
decode' "hello" ::Maybe (DS "hello") ==> Just (DS :: DS "hello")
Конечно можно все это сделать при помощи TH,но как без?
data DS :: Symbol -> * where DS :: DS k instance KnownSymbol s => ToJSON (DS s) where toJSON _ = toJSON $ symbolVal (Proxy @ s) instance KnownSymbol s => FromJSON (DS s) where parseJSON x = do s0 <- parseJSON x if (symbolVal (Proxy @ s)) == s0 then pure DS else fail "foo"
Обсуждают сегодня