dotty-cps-async
Scala Async
Our great sponsors
dotty-cps-async | Scala Async | |
---|---|---|
10 | 2 | |
170 | 1,137 | |
- | 0.0% | |
9.4 | 5.9 | |
12 days ago | 29 days ago | |
Scala | Scala | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
dotty-cps-async
-
Help a Kotlin convert back into Scala world
Now in scala we have direct mode transformers: dotty-cps-async [https://github.com/rssh/dotty-cps-async] with cps-async-connect [https://github.com/rssh/cps-async-connect ] supports all well-knowm monad stacks, for ZIO also exists ZIO-direct [https://github.com/zio/zio-direct ] , for IO - cats-effect-cps [https://github.com/typelevel/cats-effect-cps ], for kyo [https://github.com/fwbrasil/kyo ] - kyo-direct.
-
dotty-cps-async 0.9.12 is out
dotty-cps-async: https://github.com/rssh/dotty-cps-async
-
The case against Effect Systems (e.g., the IO data type)
Hmm, you can write direct-style code with monad: https://github.com/rssh/dotty-cps-async allows this, exists support libraries exist for near all well-known effect systems: https://github.com/rssh/cps-async-connect, so you can use async/await with IO/ZIO the same as with Future. Although in IO style, any operation that mutates state is async, it's hard to write code where you should place `await` near each line. And it looks like automatic coloring is a too radical change of concepts for most functional programmers. The option to allow using <- in the direct style may be more popular, but this requires changes to the scala core. Another question - are we need effective systems to be present in each program in industrial-style development? Here I agree that mostly no.
- dotty-cps-async 0.9.11 is out. (bugfixes and experimental loom support)
- dotty-cps-async 0.9.9
- New Scala 3 Codebases
- Also dotty-cps-async 0.9.8 with scala-native support
- dotty-cps-async 0.9.8 with scala-native support
-
Dotty-cps-async 0.9.7 is released.
This is a generic async/await transformer for scala3 which allows using effectful monads in the direct style. URL: (https://github.com/rssh/dotty-cps-async )
-
Language-assisted Flattening
dotty-cps-async [rssh/dotty-cps-async ] with automatic coloring do something very similar in two steps. Automatic coloring defines implicit conversion F[A] => A as x => await(x)(m). The compiler inserts those awaits inside async blocks and then eliminates them later via cps-transform. Exists some limitations which we need to add for effect monads like IO (we don't want run effect twice and don't want to screw semantics of effects by extra memoizing). So, if your language has a possibility to implement effect monads, then you need a possibility to restrict using Flattenable.
Scala Async
-
Scala Multiplatform. Across the Universe
Who said FP was mandatory? Scala is not Haskell, nor Lisp! If you don't like effect systems and all, don't use them. The choice is yours, actually. Kotlin's coroutines aren't better than what Scala offers. You can even use async/await in Scala. IMO, if you get yourself in a "callback hell" with Scala, then you're not using it properly. For comprehensions are easy to understand, and work with Futures, for instance.
-
I love Scala but I can't stand:
Here is your async/await ;) https://github.com/scala/scala-async
What are some alternatives?
scala3-example-project - An example sbt project that compiles using Dotty
cats - Lightweight, modular, and extensible library for functional programming.
cps-async-connect
Enumeratum - A type-safe, reflection-free, powerful enumeration implementation for Scala with exhaustive pattern match warnings and helpful integrations.
scala-3-migration-guide - The Scala 3 migration guide for everyone.
Each - A macro library that converts native imperative syntax to scalaz's monadic expressions
Rx.NET - The Reactive Extensions for .NET
better-files - Simple, safe and intuitive Scala I/O
scala-gopher - Implementation of CSP constructions (Communication Sequence Process, i.e. go-like channels) in scala
Quicklens - Modify deeply nested case class fields
libretto - Declarative concurrency and stream processing library for Scala
scala.meta - Library to read, analyze, transform and generate Scala programs