From f04a741304429909c2efb8218d771a46cbeb54a7 Mon Sep 17 00:00:00 2001 From: Huw Campbell Date: Mon, 30 Sep 2024 10:10:33 +1000 Subject: [PATCH] Add thanks --- README.md | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 02a8a41..2e8297b 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ is not fancy. But it is: - Efficient, -- Correct, and +- Highly conformant, and - Easy to use. @@ -61,4 +61,27 @@ encoder = decoder :: Schema -> Either SchemaMismatch (Get Person) decoder writerSchema = Avro.makeDecoder personCodec writerSchema -``` \ No newline at end of file +``` + + +Acknowledgements and Alternatives +--------------------------------- + +While this code is derived from our Elm library, we would like to thank Haskell Works for +their [Avro library](https://github.com/haskell-works/avro), which inspires parts of the +implementation and clarified a number of points. It is an alternative well worth considering +for parsing Avro data in Haskell. + +The main differences between this library and that are: + +- Haskell Works' Avro library prefers type classes over values for encoders and decoders; +- It favours code generation using Template Haskell over writing decoders and encoders; and +- It doesn't have anything like our `Codec` type. + +You should consider our library if: + +- You are happy to write your own model types and codecs (which in turn generate schemas); +- You want to dynamically generate Avro data of unknown shape in your program (types defined + by your users); or +- You are happy with a smaller library with fewer features but greater test coverage and + excellent adherence to the Avro specification.