Вече познаваме Scala доста добре
Обявявам всички за достойни функционални магьосници :)
Първите три предоставят имплементация на Cats Effect type class-овете
Чистите функции често рефирират към други конкретни функции.
Често обаче бихме желали да се абстрахираме от конкретната имплементация на тези функции
Във ФП това може да постигнем като функцията се подава като параметър:
Тоест функционален вариант на using
Домейни:
Подход:
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 JSONПомощни:
Http 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 клиент