Вече познаваме Scala доста добре
Вече всички можем да се наречен функционални магьосници :)
Първите три предоставят имплементация на Cats Effect type class-овете
A JSON library for Scala powered by Cats
Encoding
Data Model -> Encoder -> Json -> String
Decoding
String -> Parser -> Json -> HCursor -> Decoder -> Data Model
json/examples/IdCard
String -> Parser -> Json -> HCursor -> Decoder -> Data Model
val circeVersion = "0.14.1"
libraryDependencies ++= Seq(
"io.circe" %% "circe-core",
"io.circe" %% "circe-generic",
"io.circe" %% "circe-parser"
).map(_ % circeVersion)
circe-core
- core data type and type classescirce-generic
- uses Shapeless to auto-generate Decoder/Encoder for case classes.circe-parser
- Parser type class for decoding JSONHttp applications are just a Kleisli function from a streaming request to a polymorphic effect of a streaming response. So what’s the problem?
Нека разгледаме как е изграден http4s
OptionT[F[_], A] is a light wrapper on an F[Option[A]]
http4s
има и HTTP клиентЧистите функции често рефирират към други конкретни функции.
Често обаче бихме желали да се абстрахираме от конкретната имплементация на тези функции
Във ФП това може да постигнем като функцията се подава като параметър:
Тоест функционален вариант на using
Домейни:
Подход: