Comments (3)
Also if you add Codec[A]
you might consider whether the more general profunctor GenCodec[A,B]
(name stolen from scodec) is interesting enough to keep around. It kind of pops out. I have it in doobie for now but I'm kind of on the fence.
from circe.
FWIW I just went through this in reverse with doobie (and had a good discussion with @mpilquist who went through a similar exercise with scodec). My approach is:
- All code is written in terms of
Decode
andEncode
; if you need both you ask for both. Codec
is just a convenience for the common case where you have a symmetric pair and want to define them together (orxmap
an existing pair). It's not used as a context bound.Encode
andDecode
have implicit derivations that consume and return aCodec
to fix the search problem described above.- You can't get a
Codec
implicitly from anEncode
+Decode
. I think this turns out to not be very useful because of (1).
In my case you almost always have read/write pairs so getting rid of Codec
would be really inconvenient.
from circe.
Done in #1151.
from circe.
Related Issues (20)
- Maximal number of successive inlines (32) exceeded, Maybe this is caused by a recursive inline method? HOT 7
- Circe cannot decode output from auto-derived codec on Scala 3 HOT 1
- Scala3 derivation incorrectly assumes collection type for generic class HOT 4
- Stack overflow on 0.14.6 HOT 4
- Unexpected derivation of Encoder[Option[T]]
- Modifying JsonObject using ACursor/HCursor performance hit due to megamorphic calls HOT 1
- Invalid Json tree with `null` (java) values, NPE in printer HOT 1
- a problem with current derivations HOT 7
- Properly parse JSON object key with quotes HOT 1
- usage of ISO_ZONED_DATE_TIME as default formatter in encoder HOT 3
- Scala 2.13: derivedConfiguratedEncoder becomes unconfigured under some conditions HOT 1
- Expected `json` string interpolator from io.circe.literal to be able to interpolate variable inside of value strings HOT 2
- Invalid pathToRoot for `missing required field` validation error HOT 2
- flaky test PointerInterpolatorSuite HOT 2
- `StackOverflowError` if local class since 0.14.7 with Scala 3 HOT 2
- Adjust contrast of website nav menu colours
- Refined version update for JS and JVM HOT 4
- Move refined into its own repo with its own release cycle
- Scala 3 Inconsistent Application of Configuration Discriminator
- Decoder error message: loss of information HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from circe.