ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 420
Obunachilar
+124 soatlar
+17 kunlar
-430 kunlar
Postlar arxiv
1 420
ืืืฉ ืืืืืืืช ืงืฆืจืืช ืืฉืืืืฉ ื cat effect ืืกืงืืื
ืืื ืื ืื ืืืืื ื ืืกืงืืื ืืชืื ืืช ืืกืื ืืจืื ื ื ืงืจื Future, ืืืื ืงืฆืช ืืืืืจ ืืช Promise ืฉื JavaScript. ืืืขืื ืฉื ืืจืื ืื ืฉืื ืขื Future ืืื ืฉืืื ืืืืฆื ืชืืฆืื ืขืชืืืืช ืืื ืืืฉืื ืขืชืืื. ืื ืืืืจ ืฉืื ืืฉ ืื Future ืืื ืื ื ืื ืืืื ืืืจืืฅ ืืืชื ืืื ืคืขืืื (ืื ืืืืฉืื ืืืจ ืจืฅ).
ืืกืืื ืืืช ื ืืฆืจื ืืจืื ืกืคืจืืืช ืืจืืื ืืฉืคื ืฉืืืคืฉืจืืช ืืืืฆืจ ืืืฉืื ืขืชืืื ืืฆืืจื ืคืื ืงืฆืืื ืืืืช ืืืื Side Effects. ืืืช ืืคืืคืืืจืืืช ืืื cats effect ืืื ื ืืืฉ ืืืืืืืช ืจืืฉืื ืืช ืฉืืชืืชื ืขื ืืกืคืจืื.
ืฉืืื ืขืืื
ืชืืื ืืช ืกืงืืื ืจืืฉืื ื ืขื cat effect ืืื ืืืืื ืคืื ืงืฆืื ืฉืืืคืืกื ืฉืืื ืขืืื:
def demo1(): IO[ExitCode] =
IO.println("Hello WOrld") >> IO.pure(ExitCode.Success)
ืืจืขืืื ืืจืืฉืื ืืืืฉ ืืื ืืื ืฉืคืื ืงืฆืื ืฉืืคืฉืจ ืืืจืืฅ ืืฆืืจื ืืกืื ืืจืื ืืช ืื ืืขืฆื ืคืื ืงืฆืื ืฉืืืืืจื IO, ืืื ื ืงืจื ืืคืงื. ืืื ืืคืื ืงืฆืื demo1 ืฉืืืืืจื IO[ExitCode] ืืชืืืื ืืืจืฆื ืืฆืืจื ืืกืื ืืจืื ืืช. ืืกืืื >> ืืื ืืจื ืืืืจ ืฉื ื ืืคืงืืื ืืืืืืืจ ืจืง ืืช ืืชืืฆืื ืฉื ืืฉื ื, ืืคืื ืงืฆืื IO.println ืืืืฆืจืช ืืคืงื ืฉืืืคืืก ืืืกื ื IO.pure ืืืืฆืจืช ืืคืงื ืฉืืืืืจ ืขืจื ืงืืืข (ืืื ืืคืฉืจ ืืืฉืื ืขื ืืคืงื ืืชืืจ Promise ืืื ืื ืืืคื ืืืชืจ ืืกืืื ืื ืืคืงื ืืคืฉืจ ืื ืืืื).
ืฉืืื ืขืืื ืขื ืืืชื ื
ืขืืฉืื ืฉืืื ื ืืช ืืกืืคืืจ ืฉื ืืคืงืืื ืืคืฉืจ ืืืืฉืื ืืืจืืืช ืืื ืืืืจืื ืืืชื. ืืจื ืืืช ืืืืจ ืืคืงืืื ืืื ืกืืื ื >> ืฉืืืจ ืคืืฉื ื ืืืคืฉืจ ืืงืืช ืืืชื ืขืื ืฆืขื ืงืืืื. ืืคืื ืงืฆืื IO.sleep ืืืืืจื ืืคืงื ืฉืืืื, ืืืื ืืงืื ืืื:
def demo11(): IO[ExitCode] =
IO.sleep(1000.millis) >> IO.println("1") >>
IO.sleep(1000.millis) >> IO.println("2") >>
IO.sleep(1000.millis) >> IO.println("3") >>
IO.pure(ExitCode.Success)
ืืืืฆืจ ืืคืงื ืฉืืืื ืฉื ืื, ืืืคืืก 1, ืืืื ืขืื ืฉื ืื, ืืืคืืก 2, ืืืื ืขืื ืฉื ืื, ืืืคืืก 3 ืืื ืืืืืจ ืืฆืืื.
ืืจื ืืืจืช ืืงืฆืช ืืืชืจ ืืืืืืชืืช ืืกืงืืื ืืืชืื ืืืชื ืืื:
def demo2(): IO[ExitCode] =
for {
_ <- IO.sleep(1000.millis) >> IO.println("1")
_ <- IO.sleep(1000.millis) >> IO.println("2")
_ <- IO.sleep(1000.millis) >> IO.println("3")
} yield ExitCode.Success
ืืื ืื ืืืคืฉืจืช ืืื ืืคืงื ืืืฉืชืืฉ ืืชืืฆืื ืฉื ืืืคืงื ืฉืืคื ืื, ืืืจืืช ืฉืืืืืื ืืคืขื ืื ืขืฉืืชื ืืช ืื ืืืชืขืืืชื ืืืชืืฆืื ืฉื ืืืคืงื ืืงืืื, ืืื ืฉื ืชืชื ืื ืืช ืืฉื _.
ืฉืืื ืขืืื ืืืงืืื
ืืืจื ืฉืื ืื ื ืืืื ืื ืืื ืืืืืืจ ืืกืคืจ ืืคืงืืื ืืฆืขื ืืื ืืื ืืืจืืฅ ืืืชื ืืืงืืื, ืืืืื ื Promise.all. ื cats effect ืื ืงืืจื ืขื ืคืื ืงืฆืื ืืฉื parSequence:
def demo3(): IO[ExitCode] =
List(
IO.sleep(1000.millis) >> IO.println("1"),
IO.sleep(1000.millis) >> IO.println("2"),
IO.sleep(1000.millis) >> IO.println("3")
).parSequence >> IO.pure(ExitCode.Success)
ืืคืขื ืืงืื ืืืืืจ ืจืฉืืื ืฉื 3 ืืคืงืืื ืืืคืขืื ืขื ืืจืฉืืื ืืช parSequence. ืืชืืฆืื ืืื ืืคืขืื ืฉื ืฉืืืฉืช ืืืคืงืืื ืืืงืืื ืื ืฉืืืจื ืฉื ืื ืืืืคืกื ืฉืืืฉ ืืืืืขืืช ืืกืืจ ืืงืจืื.
ืืฉืืืช ืืืืข ืืืจืฉืช
ืกืคืจืืืช ืืจืืื ืจืืืช ืฉื ืกืงืืื ืฉืงืฉืืจืืช ื IO ืืืืืช ืืืจืกื ืืืชืืืช ื cats effect, ืืืืืื ืืกืคืจืื sttp ืฉืืืืขืช ืืฉืืื ืืงืฉืืช HTTP. ืืงืื ืืื ืืกืงืืื ืืืืืจ ืืคืงื ืฉืคืื ื ื URL (ืืืืืื ืฉืื ืื https://icanhazdadjoke.com/) ืืืืืืจ ืืช ืืืฃ ืืชืฉืืื ืืชืืจ ืืืจืืืช:
def randomDadJoke(): IO[String] =
HttpClientCatsBackend.resource[IO]().use { backend =>
basicRequest
.header("Accept", "application/json")
.get(uri"https://icanhazdadjoke.com/")
.response(asString)
.send(backend)
.map {response => response.body.right.get}
}
ืืืืจ ืืืฉืื ืืฉืื ืื ืืื ืขืจื ืืืืืจื ืฉื ืืคืื ืงืฆืื ืฉืื IO[String] ืืืืืจ ืืืืืจ ืืืคืงื ืฉืืืืืจ ืืืจืืืช. ืืคืฉืจ ืืืฉืชืืฉ ืืืคืงื ืื ืืื ืืืืคืืก ืืช ืืชืฉืืื:
def demo4(): IO[ExitCode] =
randomDadJoke().map(s => println(s)) >> IO.pure(ExitCode.Success)
ืืฉืืืช ืืืืข ืืืจืฉืช ืืืงืืื
ืืืืืื ืืืจื ืฉืืฉ ืืคืงื ืืคืฉืจ ืืืจืืฅ ืืืชื ืืืงืืื ืืื ืืงืื ืืกืคืจ ืืืืืืช:
def demo5(): IO[ExitCode] =
List(
randomDadJoke().map(s => println(s)),
randomDadJoke().map(s => println(s)),
randomDadJoke().map(s => println(s))
).parSequence >> IO.pure(ExitCode.Success)1 420
ืืืฉ ืืืืืืืช ืงืฆืจืืช ืืฉืืืืฉ ื cat effect ืืกืงืืื
ืืื ืื ืื ืืืืื ื ืืกืงืืื ืืชืื ืืช ืืกืื ืืจืื ื ื ืงืจื Future, ืืืื ืงืฆืช ืืืืืจ ืืช Promise ืฉื JavaScript\. ืืืขืื ืฉื ืืจืื ืื ืฉืื ืขื Future ืืื ืฉืืื ืืืืฆื ืชืืฆืื ืขืชืืืืช ืืื ืืืฉืื ืขืชืืื\. ืื ืืืืจ ืฉืื ืืฉ ืื Future ืืื ืื ื ืื ืืืื ืืืจืืฅ ืืืชื ืืื ืคืขืืื (ืื ืืืืฉืื ืืืจ ืจืฅ)\.
ืืกืืื ืืืช ื ืืฆืจื ืืจืื ืกืคืจืืืช ืืจืืื ืืฉืคื ืฉืืืคืฉืจืืช ืืืืฆืจ ืืืฉืื ืขืชืืื ืืฆืืจื ืคืื ืงืฆืืื ืืืืช ืืืื Side Effects\. ืืืช ืืคืืคืืืจืืืช ืืื cats effect ืืื ื ืืืฉ ืืืืืืืช ืจืืฉืื ืืช ืฉืืชืืชื ืขื ืืกืคืจืื\.
ืฉืืื ืขืืื
ืชืืื ืืช ืกืงืืื ืจืืฉืื ื ืขื cat effect ืืื ืืืืื ืคืื ืงืฆืื ืฉืืืคืืกื ืฉืืื ืขืืื:
def demo1(): IO[ExitCode] \=
IO\.println("Hello WOrld") \>\> IO\.pure(ExitCode\.Success)
ืืจืขืืื ืืจืืฉืื ืืืืฉ ืืื ืืื ืฉืคืื ืงืฆืื ืฉืืคืฉืจ ืืืจืืฅ ืืฆืืจื ืืกืื ืืจืื ืืช ืื ืืขืฆื ืคืื ืงืฆืื ืฉืืืืืจื IO, ืืื ื ืงืจื ืืคืงื\. ืืื ืืคืื ืงืฆืื demo1 ืฉืืืืืจื IO[ExitCode] ืืชืืืื ืืืจืฆื ืืฆืืจื ืืกืื ืืจืื ืืช\. ืืกืืื \>\> ืืื ืืจื ืืืืจ ืฉื ื ืืคืงืืื ืืืืืืืจ ืจืง ืืช ืืชืืฆืื ืฉื ืืฉื ื, ืืคืื ืงืฆืื IO\.println ืืืืฆืจืช ืืคืงื ืฉืืืคืืก ืืืกื ื IO\.pure ืืืืฆืจืช ืืคืงื ืฉืืืืืจ ืขืจื ืงืืืข (ืืื ืืคืฉืจ ืืืฉืื ืขื ืืคืงื ืืชืืจ Promise ืืื ืื ืืืคื ืืืชืจ ืืกืืื ืื ืืคืงื ืืคืฉืจ ืื ืืืื)\.
ืฉืืื ืขืืื ืขื ืืืชื ื
ืขืืฉืื ืฉืืื ื ืืช ืืกืืคืืจ ืฉื ืืคืงืืื ืืคืฉืจ ืืืืฉืื ืืืจืืืช ืืื ืืืืจืื ืืืชื\. ืืจื ืืืช ืืืืจ ืืคืงืืื ืืื ืกืืื ื \>\> ืฉืืืจ ืคืืฉื ื ืืืคืฉืจ ืืงืืช ืืืชื ืขืื ืฆืขื ืงืืืื\. ืืคืื ืงืฆืื IO\.sleep ืืืืืจื ืืคืงื ืฉืืืื, ืืืื ืืงืื ืืื:
def demo11(): IO[ExitCode] \=
IO\.sleep(1000\.millis) \>\> IO\.println("1") \>\>
IO\.sleep(1000\.millis) \>\> IO\.println("2") \>\>
IO\.sleep(1000\.millis) \>\> IO\.println("3") \>\>
IO\.pure(ExitCode\.Success)
ืืืืฆืจ ืืคืงื ืฉืืืื ืฉื ืื, ืืืคืืก 1, ืืืื ืขืื ืฉื ืื, ืืืคืืก 2, ืืืื ืขืื ืฉื ืื, ืืืคืืก 3 ืืื ืืืืืจ ืืฆืืื\.
ืืจื ืืืจืช ืืงืฆืช ืืืชืจ ืืืืืืชืืช ืืกืงืืื ืืืชืื ืืืชื ืืื:
def demo2(): IO[ExitCode] \=
for {
_ <\- IO\.sleep(1000\.millis) \>\> IO\.println("1")
_ <\- IO\.sleep(1000\.millis) \>\> IO\.println("2")
_ <\- IO\.sleep(1000\.millis) \>\> IO\.println("3")
} yield ExitCode\.Success
ืืื ืื ืืืคืฉืจืช ืืื ืืคืงื ืืืฉืชืืฉ ืืชืืฆืื ืฉื ืืืคืงื ืฉืืคื ืื, ืืืจืืช ืฉืืืืืื ืืคืขื ืื ืขืฉืืชื ืืช ืื ืืืชืขืืืชื ืืืชืืฆืื ืฉื ืืืคืงื ืืงืืื, ืืื ืฉื ืชืชื ืื ืืช ืืฉื _\.
ืฉืืื ืขืืื ืืืงืืื
ืืืจื ืฉืื ืื ื ืืืื ืื ืืื ืืืืืืจ ืืกืคืจ ืืคืงืืื ืืฆืขื ืืื ืืื ืืืจืืฅ ืืืชื ืืืงืืื, ืืืืื ื Promise\.all\. ื cats effect ืื ืงืืจื ืขื ืคืื ืงืฆืื ืืฉื parSequence:
def demo3(): IO[ExitCode] \=
List(
IO\.sleep(1000\.millis) \>\> IO\.println("1"),
IO\.sleep(1000\.millis) \>\> IO\.println("2"),
IO\.sleep(1000\.millis) \>\> IO\.println("3")
)\.parSequence \>\> IO\.pure(ExitCode\.Success)
ืืคืขื ืืงืื ืืืืืจ ืจืฉืืื ืฉื 3 ืืคืงืืื ืืืคืขืื ืขื ืืจืฉืืื ืืช parSequence\. ืืชืืฆืื ืืื ืืคืขืื ืฉื ืฉืืืฉืช ืืืคืงืืื ืืืงืืื ืื ืฉืืืจื ืฉื ืื ืืืืคืกื ืฉืืืฉ ืืืืืขืืช ืืกืืจ ืืงืจืื\.
ืืฉืืืช ืืืืข ืืืจืฉืช
ืกืคืจืืืช ืืจืืื ืจืืืช ืฉื ืกืงืืื ืฉืงืฉืืจืืช ื IO ืืืืืช ืืืจืกื ืืืชืืืช ื cats effect, ืืืืืื ืืกืคืจืื sttp ืฉืืืืขืช ืืฉืืื ืืงืฉืืช HTTP\. ืืงืื ืืื ืืกืงืืื ืืืืืจ ืืคืงื ืฉืคืื ื ื URL (ืืืืืื ืฉืื ืื https://icanhazdadjoke\.com/) ืืืืืืจ ืืช ืืืฃ ืืชืฉืืื ืืชืืจ ืืืจืืืช:
def randomDadJoke(): IO[String] \=
HttpClientCatsBackend\.resource[IO]()\.use { backend \=\>
basicRequest
\.header("Accept", "application/json")
\.get(uri"https://icanhazdadjoke\.com/")
\.response(asString)
\.send(backend)
\.map {response \=\> response\.body\.right\.get}
}
ืืืืจ ืืืฉืื ืืฉืื ืื ืืื ืขืจื ืืืืืจื ืฉื ืืคืื ืงืฆืื ืฉืื IO[String] ืืืืืจ ืืืืืจ ืืืคืงื ืฉืืืืืจ ืืืจืืืช\. ืืคืฉืจ ืืืฉืชืืฉ ืืืคืงื ืื ืืื ืืืืคืืก ืืช ืืชืฉืืื:
def demo4(): IO[ExitCode] \=
randomDadJoke()\.map(s \=\> println(s)) \>\> IO\.pure(ExitCode\.Success)
ืืฉืืืช ืืืืข ืืืจืฉืช ืืืงืืื
ืืืืืื ืืืจื ืฉืืฉ ืืคืงื ืืคืฉืจ ืืืจืืฅ ืืืชื ืืืงืืื ืืื ืืงืื ืืกืคืจ ืืืืืืช:
def demo5(): IO[ExitCode] \=
List(
randomDadJoke()\.map(s \=\> println(s)),
randomDadJoke()\.map(s \=\> println(s)),
randomDadJoke()\.map(s \=\> println(s))1 420
# ืืืฉ ืืืืืืืช ืงืฆืจืืช ืืฉืืืืฉ ื cat effect ืืกืงืืื
ืกืงืืื ืื ืืืืืช ืื ืื ืื ืชืืืืจื ืืืื ื ืืงืื ืืกืื ืืจืื ื ืืื ื ืืฆืจื ืกืคืจืืืช ืืจืืื ืจืืืช ืฉืื ืกืืช ืืืฉืจ ืขื ืืคืขืจ. cat effect ืืื ืกืคืจืื ืคืืคืืืจืืช ืืื ืฉื ืจืืืช ืืืืฉื ืืืชืืืืงืช, ืืื ืื ืืืื ืืื ืคืฉืืื ืืืืืื. ืื ื ืืืฉ ืืืืืืืช ืืืกืืช ืคืฉืืืืช ืฉืขืืจื ืื ืืืชืืื.
## ืฉืืื ืขืืื
ืชืืื ืืช ืกืงืืื ืจืืฉืื ื ืขื cat effect ืืื ืืืืื ืคืื ืงืฆืื ืฉืืืคืืกื ืฉืืื ืขืืื:
def demo1(): IO[ExitCode] =
IO.println("Hello WOrld") >> IO.pure(ExitCode.Success)
ืืจืขืืื ืืจืืฉืื ืืืืฉ ืืื ืืื ืฉืคืื ืงืฆืื ืฉืืคืฉืจ ืืืจืืฅ ืืฆืืจื ืืกืื ืืจืื ืืช ืื ืืขืฆื ืคืื ืงืฆืื ืฉืืืืืจื IO, ืืื ื ืงืจื ืืคืงื. ืืื ืืคืื ืงืฆืื demo1 ืฉืืืืืจื IO[ExitCode] ืืชืืืื ืืืจืฆื ืืฆืืจื ืืกืื ืืจืื ืืช. ืืกืืื >> ืืื ืืจื ืืืืจ ืฉื ื ืืคืงืืื ืืืืืืืจ ืจืง ืืช ืืชืืฆืื ืฉื ืืฉื ื, ืืคืื ืงืฆืื IO.println ืืืืฆืจืช ืืคืงื ืฉืืืคืืก ืืืกื ื IO.pure ืืืืฆืจืช ืืคืงื ืฉืืืืืจ ืขืจื ืงืืืข (ืืื ืืคืฉืจ ืืืฉืื ืขื ืืคืงื ืืชืืจ Promise ืืื ืื ืืืคื ืืืชืจ ืืกืืื ืื ืืคืงื ืืคืฉืจ ืื ืืืื).
## ืฉืืื ืขืืื ืขื ืืืชื ื
ืขืืฉืื ืฉืืื ื ืืช ืืกืืคืืจ ืฉื ืืคืงืืื ืืคืฉืจ ืืืืฉืื ืืืจืืืช ืืื ืืืืจืื ืืืชื. ืืจื ืืืช ืืืืจ ืืคืงืืื ืืื ืกืืื ื >> ืฉืืืจ ืคืืฉื ื ืืืคืฉืจ ืืงืืช ืืืชื ืขืื ืฆืขื ืงืืืื. ืืคืื ืงืฆืื IO.sleep ืืืืืจื ืืคืงื ืฉืืืื, ืืืื ืืงืื ืืื:
def demo11(): IO[ExitCode] =
IO.sleep(1000.millis) >> IO.println("1") >>
IO.sleep(1000.millis) >> IO.println("2") >>
IO.sleep(1000.millis) >> IO.println("3") >>
IO.pure(ExitCode.Success)
ืืืืฆืจ ืืคืงื ืฉืืืื ืฉื ืื, ืืืคืืก 1, ืืืื ืขืื ืฉื ืื, ืืืคืืก 2, ืืืื ืขืื ืฉื ืื, ืืืคืืก 3 ืืื ืืืืืจ ืืฆืืื.
ืืจื ืืืจืช ืืงืฆืช ืืืชืจ ืืืืืืชืืช ืืกืงืืื ืืืชืื ืืืชื ืืื:
def demo2(): IO[ExitCode] =
for {
_ <- IO.sleep(1000.millis) >> IO.println("1")
_ <- IO.sleep(1000.millis) >> IO.println("2")
_ <- IO.sleep(1000.millis) >> IO.println("3")
} yield ExitCode.Success
ืืื ืื ืืืคืฉืจืช ืืื ืืคืงื ืืืฉืชืืฉ ืืชืืฆืื ืฉื ืืืคืงื ืฉืืคื ืื, ืืืจืืช ืฉืืืืืื ืืคืขื ืื ืขืฉืืชื ืืช ืื ืืืชืขืืืชื ืืืชืืฆืื ืฉื ืืืคืงื ืืงืืื, ืืื ืฉื ืชืชื ืื ืืช ืืฉื _.
## ืฉืืื ืขืืื ืืืงืืื
ืืืจื ืฉืื ืื ื ืืืื ืื ืืื ืืืืืืจ ืืกืคืจ ืืคืงืืื ืืฆืขื ืืื ืืื ืืืจืืฅ ืืืชื ืืืงืืื, ืืืืื ื Promise.all. ื cats effect ืื ืงืืจื ืขื ืคืื ืงืฆืื ืืฉื parSequence:
def demo3(): IO[ExitCode] =
List(
IO.sleep(1000.millis) >> IO.println("1"),
IO.sleep(1000.millis) >> IO.println("2"),
IO.sleep(1000.millis) >> IO.println("3")
).parSequence >> IO.pure(ExitCode.Success)
ืืคืขื ืืงืื ืืืืืจ ืจืฉืืื ืฉื 3 ืืคืงืืื ืืืคืขืื ืขื ืืจืฉืืื ืืช parSequence. ืืชืืฆืื ืืื ืืคืขืื ืฉื ืฉืืืฉืช ืืืคืงืืื ืืืงืืื ืื ืฉืืืจื ืฉื ืื ืืืืคืกื ืฉืืืฉ ืืืืืขืืช ืืกืืจ ืืงืจืื.
## ืืฉืืืช ืืืืข ืืืจืฉืช
ืกืคืจืืืช ืืจืืื ืจืืืช ืฉื ืกืงืืื ืฉืงืฉืืจืืช ื IO ืืืืืช ืืืจืกื ืืืชืืืช ื cats effect, ืืืืืื ืืกืคืจืื sttp ืฉืืืืขืช ืืฉืืื ืืงืฉืืช HTTP. ืืงืื ืืื ืืกืงืืื ืืืืืจ ืืคืงื ืฉืคืื ื ื URL (ืืืืืื ืฉืื ืื https://icanhazdadjoke.com/) ืืืืืืจ ืืช ืืืฃ ืืชืฉืืื ืืชืืจ ืืืจืืืช:
def randomDadJoke(): IO[String] =
HttpClientCatsBackend.resource[IO]().use { backend =>
basicRequest
.header("Accept", "application/json")
.get(uri"https://icanhazdadjoke.com/")
.response(asString)
.send(backend)
.map {response => response.body.right.get}
}
ืืืืจ ืืืฉืื ืืฉืื ืื ืืื ืขืจื ืืืืืจื ืฉื ืืคืื ืงืฆืื ืฉืื IO[String] ืืืืืจ ืืืืืจ ืืืคืงื ืฉืืืืืจ ืืืจืืืช. ืืคืฉืจ ืืืฉืชืืฉ ืืืคืงื ืื ืืื ืืืืคืืก ืืช ืืชืฉืืื:
def demo4(): IO[ExitCode] =
randomDadJoke().map(s => println(s)) >> IO.pure(ExitCode.Success)
## ืืฉืืืช ืืืืข ืืืจืฉืช ืืืงืืื
ืืืืืื ืืืจื ืฉืืฉ ืืคืงื ืืคืฉืจ ืืืจืืฅ ืืืชื ืืืงืืื ืืื ืืงืื ืืกืคืจ ืืืืืืช:
def demo5(): IO[ExitCode] =
List(
randomDadJoke().map(s => println(s)),
randomDadJoke().map(s => println(s)),
randomDadJoke().map(s => println(s))
).parSequence >> IO.pure(ExitCode.Success)1 420
# ืกืืฃ ืืืจื
ืืคืจืืืงื ืชืืื ื, ืกืืฃ ืืืจื ืืื ืื ืงืืื ืฉืืฃ ืืื ืืืจ ืื ืจืืฆื ืื ืืืื ืืืืฉืื ืืขืืื ืขื ืืคืจืืืงื ืืื ืืืื ืกืืืื ืืจืืืช ืื ืคืืฆ'ืจืื ืืืฉืื. ืื ื ืืื ืืืคืืื ืื ืืฉืืชืคืื ืฉืจืืืชื ืืคืจืืืงืืื ืฉืืืืขื ืืฉืื ืืื:
1. ืชืฉืชืืืช (ืชืืืืืช, ืืกืืกื ื ืชืื ืื, ืฉืจืชืื) ืืฉื ืืช. ืืืขืฉื ืื ืื ืืฉื ืืช ืฉืืื ืืืืฅ ืื ืืืืืช ืืฉืืจื ืืืชื.
2. ืงืืฉื ืืืืืก ืืชืื ืชืื. ืืืจื ืืื ืืืื ืฉืคืช ืชืื ืืช ืืฉื ื ืื ืืืฉื ืืื.
3. ืืืขืืจ ืชืฉืชืืช ืืืืงืืช ืืืืฆืจ ืืืชืืง. ืื ืฉืืจืช ืงืื ืฉืชืืกืืฃ ืชืคืืข ืืคืื ืงืฆืืื ืืืืืช ืฉืืืฉืื ืืืคืฉืื ืฆืจืื.
4. ืืืกืจ ืืืืืช ืืื ืืช ืืช ืืคืจืืืงื ืขื ืืืื ืช ืคืืชืื ืจืืืื. ืืจืืฉื ืืืชืงื ืืช ืืืืืืืช ืื ืชืืืืื ืื ืื ืืืืืืื.
ืืจืื ืคืขืืื ืคืจืืืงื ืืืืข ืืกืืฃ ืืืจื ืืืื ืืคืงื ืืืืจ ืฉืื - ืื ืื ื ืื ืกืื ืืืชืงืื ืืคืืชืื, ืืื ืืขืืืช ืชืฉืชืืช ืืืจืืืช ืื ื ืืขืืื ืืืชืจ ืงืฉื ืขื ืื ืฆืขื, ืืืืชืงืืืืช ืืืืืืช ืืืจืืื ืืืชื ื ืืืฉืงืืข ืืืชืจ ืืื ืืคืืฆ'ืจืื ืืืืฉืื ืืืงืื ืืคืชืืจ ืืช ืืขืืืช ืืชืฉืชืืช. ืืชืืฉืื ืืืืขื ืื ืงืืื ืฉืืืชืื ืืช ืืคืจืืืงื ืืืืฉ ืืืจ ืืืื ืืืชืจ ืงื ืืืืืกืืฃ ืขืื ืคืืฆ'ืจ. ืื ืกืืฃ ืืืจื.
1 420
# ืืืคืก ืืื ืกืชื ืงืื ืกืืจืืื ื
ืืคื ื ืืื ืฉืืืขืืช ืืชืืืชื ืืืืื ืืจืืืื ืืื ืคืจืกืืชื ืืื ืคืืกื ืขื ืืื ืืืืืืืช ืงืื, ืืืช ืืื ืืืชื:
def createPost(g: GraphTraversalSource, slug: String, title: String, publishedAt: String): Vertex =
g.addV("post")
.property("slug", slug)
.property("title", title)
.property("publishedAt", LocalDateTime.parse(publishedAt, formatter))
.next()
ืื ื ืจืื ืชืืื - ืืงืื ืืืฆืจ ืฆืืืช, ืืืืืจ ืฉืืืฉื ืืืคืืื ืื ืืฉืืืจ. ืืขื ืืืจื ืืืกืืฃ ืืืืื ืืฉืืขืืชืืช ืืืขืจืืช ืฉืื ื.
ืืจืืืื ืืื ืฉืคืช ืฉืืืืชืืช ืืืคืฉืจ ืืืฉืชืืฉ ืื ืืื ืืชืฉืื ืืกืืกื ื ืชืื ืื ืืจืืืงืื (ืืืฉื neptune ืฉืจืฅ ืืขื ื ืฉื AWS ืื ืงืืกืืืก ืฉืจืฅ ืืื'ืืจ ืื ืืจืงืืื ืืืื ืฉืจืฅ ืขื ืืืื ื ืฉืืื), ืืื ืืกืฃ ืืื ืืืฉืช ืืืกืืกื ื ืชืื ืื ืืืืืจืื ืฉืจืฆืื ืืืืชื JVM ืืื ืืชืืื ืืช.
ืืืืืืช ืืงืื ืฉืคืจืกืืชื ืืืืจืชื ืืกืืก ื ืชืื ืื ืืืืืข ืฉืจืฅ ืืืืืจืื ืืืืชื JVM ืืื ืฉื ืืชืืื ืืช, ืืืื ืืื ืืขืื ืืฉืืืจ ืืืืืงืืื ืืชืืืืืื ืืื ืชืืจืื ืืืืชื ืืกืืก ื ืชืื ืื. ื ืืกืืื ืืืขืืืจ ืืช ืืงืื ืื ืคืืื ืื ืืกืืก ื ืชืื ืื ืืจืืืง ืืืจ ืืืืฉื, ืื ืืจืืืื ืื ืขืืฉื ืกืจืืืืืืฆืื ืืืืืืืืช ืืชืืจืืืื.
ืืื ืกืช ืงืื ืกืืจืืื ืืื (ืืืกืจืชื) ืืื ืืืง ืืืขื ืืืืืื ืืืคืืชืื ืืขืจืืืช ืืืื ืืืืืืืช ืฉืื ืขืืื ื ืืื ืืขืืจ. ืืฉ ืืื ืื ืืื ื ืกืืืืช, ืืืืืื ืฉืื ืขื ืืจืืืื ืืฉืืชื ืืืชืืื ืืื ืืช ืืขืจืืช ืขื ืืกืืก ื ืชืื ืื ืืืืืข ืืจืง ืืืจ ืื ืืื ืชื ืฉืขืืืฃ ืืฉืืืจ ืืช ืืกืืก ืื ืชืื ืื ืืขื ื (ืื ืฉืืืืื ืืืืืื ืื ืืืืืืฆืื ืื ืกืชืจืื). ืื ืืืช ืืกืืืืช ืฉืงืฉื ืืชืช ืืขืจืืืช ืืื ืื ืืคืืชืื, ืืืืืืื ืืคืืชืื ืขื ืืื ืืืืืืืช ืืืฉืืช.
ืืืืชื ื ืฉืืื ืฆืจืื ืืืืื ืฉืืจืื ืคืขืืื ืฉืืืืฉ ื Best Practices ืจืืืืื ืฉื ืคืืชืื ืืืื ืืืื ืขืืื ื ืืืืง ืืืกืืืื ืื. ืืืงืจื ืฉื ืืกืจืืืืืืฆืื ืฉื ืชืืจืืืื, ืืงืคืื ืขื ืืชืืืช ืฉืืืืชืืช ืจืง ืืืงืืืืช ืกืคืฆืืคืืื ืืงืื ืืืืื ืืขืืืจ. ืืืขืจืืช ืืืืืืืช ืชืืงืื ืืงืื ืื ืฉืืืืืงื ืชืืจืื-ืฉืขื ืืืืชื ืืชืืจ long ืืฆืืจืืฃ ืืืืจ ืืื ืืืืจ ืืืฉืคืืข ืจืง ืขื ืฉืชื ืฉืืจืืช ืืืขืจืืช, ืื ืื ืืงืื ืฉืงืืจื ืืช ืฉืื ืืชืืจืื ืขืืืจ ืืจื ืืืชื ืฉืืจื.1 420
# ืงืื ืืืฉืื
ืื ืืืืชื ืืืืข ืืื ืืจืื ืื ืืืจืืฉืืช ืืขืชืืืืืช ืืืืขืจืืช ืืืืชื ืฉืื ืืืชืื ืืช ืืงืื ืืืืฉืื.
ืืขืืื ืืืืืชื ืื ื ืืขืืืฃ ืืืชืืงื ืืงืื ืฉืงื ืืฉื ืืช ืืืชื.
1 420
# ืืฉ ืื ืฉืืืฉื ืืืื ืขื ืืจืืืื ืขืืืื ืืจืืืงื - ืื ืืืืื?
ืืฉืืฉืืื ืืืืืชืจืช ื ืฉืืื ืืจืืื ืืืขืชื ืฉืื ืืืื ืืืืืช ืืขื ืืื. ืืื ืืืืคืื ืืืจืืืืื ืฉืืฆืืชื ืฉื:
1. ืืืื ืืชืขืกืงืื ืขื ื ืืืื ืกืืืื - ืืฆืจืื ืืืืื, ืืกืืคืืจ ืฉื ื ืืืื ืกืืืื ืืืืื ืืืชื ื ืืื ืฉืจืืืงื ื ืืฆืจื ืืืืฉืืจ ืืืชื ื ืื ืขืื ืื ืืืื ืฉืื ืื ืืจืืืืงืืื ื ืืืื ืืฉืืขืืชื ืืกืคืจืื.
2. ืืจืื ืื ืฉืื ืืืืจืื ืขื ืืืฆืืขืื ืืขื ืืืงืื ืืื useCallback, ืืื ืคืืืช ืืื ืฉืืฉืืชื. ืืืขื ืืฃ ืืื ืื ืืชืืืืก ื Concurrent Mode ืื useTransition
3. ืืงืืกืืกืื ืืืืืจ ืืชืืจ ืืืค ืืื ืื ื ืจืื ืฉืงืืื ืืกืคืืง ืืืฉ. ืื ืืืืื ื ืื ืืืงืืกืืกืื ืฉื ืจืืืงื ืขืฆืื, ืื ืืืงืจื ืืฉ ืืื ื ืืกืืื ืขื ืจืืืืงืก ืืืชื ืืชืจืืืื ืื ืืืงืื ืฉืืฉืชืืฉ ืืจืืืืงืก ืื ืืืื. ืืื ืื ืืืงืื ืืฉืชืืฉ ืืืืกืื ื ืื ืืฉืืื ืชืืื ืืฉืขืืืช. ืืืชื ืืืจ ืขื ืกืคืจืืืช ืืชืงืฉืืจืช ืืืคืืื ืขื next.js. ืืกืืฃ ืืฉืืจืืืื ืื ืืคืชืืื ืืืฉืจืืช ืจืืืงื ืืืืฉ ืืื ืขื ืืืืื ืฉื ืจืืืงื, ืืคืืืช ืขื ืืืกืืื.
4. ืืจืื ืื ืฉืื ืื ืืืืจื ืขื ืืืฉืืืืช ืฉื ืคืืชืื Front End ืืืืคื ืืืื - ืื ืื ืืืืคืกืงืจืืคื, ืืืืจืืช ืืืื ืขื JavaScript ืืืืืืืช ืืืฉืืช ืฉื ืืฉืคื, ืืืคืืื CSS ืืืืืืืช ืืืฉืืช ืฉืื.
ืืื ืืื ืืฉืื ืืฉืื ืื ืืชืืืืช ืืฉืืื - "ืื ื ืืคืชื ืขื ืฉืืืฉ ืฉื ืืช ื ืืกืืื ืืจืืืงื". ืื ืืกืืจ ืืืืจ ืืขืืื ืฉืืืฉ ืฉื ืื ืขื ืืื ืืื ืืืืื ืืช ืื ืื ืืืื ืกืื ืื ืฉืื ืืืื ืืืฉืชืืฉ ืืื ืืืืืืืช. ืืฉืื ืืืื ืืงืืช ืืื ืคืขื ืืช ืืืื ืืื ืืืืง ืืช ืืืืข. ืืืชื ืืฉืืื ืืงืฆืื ืืื ืฉืืืฉื ืืืื ืืืืจืืืจ ืืื ืจืืืื ืขืืืื. ืื ืื ื ืื ืฆืจืืืื ืืืืืช ืฉืืืฉ ืฉื ืื, ืืื ืืืืืื ืืจืืืจ ืืืฆืื ื.
1 420
# ืฉืืืฉื ืคืืฆ'ืจืื ืืืืืืื ืืืืืื ืืคืืืชืื 3.12
ืคืืืชืื 3.12 ืืฆืื ืื ืืืื ืืืืืื ืืืชื ืืกืคืจ ืฉืืคืืจืื ืฉืืืืืื ืืืฉืคืืข ืืืขื ืขื ืื ืืื ืืืืช ืืืืชื ื. ืืื ื-3 ืฉืื ื ืืื ืืืืชื.
## ืชืืืืจ ืงื ืืืชืจ ืืคืื ืงืฆืืืช ืื ืจืืืช
ืขื 3.12 ืืฉืืื ืืืชืื ืคืื ืงืฆืืืช ืื ืจืืืช ืืื ืฆืจืื ืืืืืืจ ืืฉืชื ืื ืืกืื TypeVar, ืืืชืื ืืืชื ืืืชืช ืืื ืฉืืืช ืืคื ื ืฉืืคืฉืจ ืืื ืืืืืข ืืืชืื ืืช ืืคืื ืงืฆืื. ืื ืืืฉื ืงืื ืื ืจื ืืืืจืกืืืช ืคืืืชืื ืืฉื ืืช:
from typing import TypeVar
StringOrNumber = TypeVar('StringOrNumber', str, int)
def add(x: StringOrNumber, y: StringOrNumber) -> StringOrNumber:
return x + y
ืืืจืกื 3.12 ืืืกืืคื ืชืืืื ื PEP 695 ืฉืืืืจ ืฉืื ืื ื ืืืืืื ืืืืืืจ ืคืื ืงืฆืืืช ืื ืจืืืช ืืื ืืกืงืืื ืืืืืจ:
def max[T](args: Iterable[T]) -> T:
...
ืืืขืื ืืืืืื ืืื ืฉืขืืืื ืื ืืคืฉืจ ืืฉืืง ืขื ืืคืืฆ'ืจ ืื ืื ื mypy ืืื ื PyCharm ืขืืืื ืืคืชืืื ืืช ืืชืืืื, ืืื ืืคืืืช ืืฉ ืืื ืืฆืคืืช.
## ืงืื ืื ืฉื ืืืจืืืืช f
ืืคืฆ'ืจ ืืื ืืืจ ืขืืื ืืคืืชืจ ืืขืื ืืืื ืืขืฆืื ืช ืขื ืืืจืืืืช f:
songs = ['Take me back to Eden', 'Alkaline', 'Ascensionism']
print(f"This is the playlist: {", ".join(songs)}")
ืืื ืจืืืชื ื ืืื - ืืงืื ืืคืืืชืื ืฉืืชืื ืืกืืืจืืื ืืืกืืืกืืื ืืืจืืืช ืืชืืชื ืืจืืืืช ืืคืืืชืื ืื ื ืืืฅ.
## ืืืืจืช ืืืคืืก ื kwargs ืขื TypedDict
ืคืืฆ'ืจ ืืืืื ืืืจืื ืืื ืืืืืืช ืืืืืืจ ืืืืืืง ืืืื ืคืจืืืจืื ืื ืื ื ืจืืฆืื ืืงืื ืืชืื ืืืืื ืืคืื ืงืฆืื ืฉืืงืืืช ืืืกืฃ ืืฉืชื ื ืฉื ืืจืืืื ืืื ืขื TypedDict:
from typing import TypedDict, Unpack
class Movie(TypedDict):
name: str
year: int
def foo(**kwargs: Unpack[Movie]): ...
ืืืช ืืืืืช ืฉืืืชื ืืืจื ืืจืื ืืื ืืืืขืงืฃ ืืจืื ืคืขืืื ืืืชืจืชื ืขื ืืงืื **kwargs ืืคืื ืงืฆืื ืืืขืืจืชื ืืืฉ ืืืืื. ืืืืืช ืื ืืืจ ืขืืืืช ื mypy. ืืื ืฉืืื ืชื ื PyCharm ืื ืขืืืื ืืคืืชืื.
ืจืฉืืืช ืืฉืื ืืืื ืืืืื ืฉื 3.12 ื ืืฆืืช ืืื:
https://docs.python.org/3/whatsnew/3.12.html
ืืื ืืืกืชืื ืืกืคืจื ืืชืืืืืช ืืืื ืคืืฆ'ืจืื ืืชื ืืื ืืืืชื.
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
