kyo
30-seconds-of-interviews
kyo | 30-seconds-of-interviews | |
---|---|---|
5 | 1 | |
422 | 11,903 | |
7.8% | - | |
9.9 | - | |
7 days ago | over 1 year ago | |
Scala | JavaScript | |
Apache License 2.0 | MIT License |
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.
kyo
-
Coroutines and Effects
Indeed - I do not think it is a coincidence that a lot of production experiments in effect systems are happening in Scala right now - the language is very flexible to conduct them. https://github.com/getkyo/kyo in particular looks interesting as it explores a different space where the monadic nature is less exposed to the end user.
-
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.
-
The Effect(s) Of Effect(s) by Flavio Brasil at Functional Scala 2022
Thanks! I'm not sure I understand your use case but it's possible to handle effects even if they aren't present in the computation. An example of that is KyoApp's run method. It handles several effects even thought the application might not use them:
30-seconds-of-interviews
-
Coroutines and Effects
https://github.com/Chalarangelo/30-seconds-of-interviews/blo...
Exception handling, for example, uses dynamic scoping since you don't know what will be handling your exception when you write code which throws it.
Another way of thinking about it is, with dynamic scoping the value of the dynamic variable must always be on the stack and the closest one is the value that will be used. This is a really good behaviour for global variables since a common source of bugs is some global variables (and I'm considering class members "global" for this) getting changed unexpectedly. If the variable is lexical then it can be very hard to figure out what changed the value (especially when threads are involved) but if the variable is dynamic it's easy: the culprit is on the stack.
What are some alternatives?
Korolev - Single Page Applications running on the server side.
Binding.scala - Reactive data-binding for Scala
calico - Calico is a UI library for the Typelevel.js ecosystem. It leverages the abstractions provided by Cats Effect and FS2 to provide a fluent DSL for building web applications that are composable, reactive, and safe. If you enjoy working with Cats Effect and FS2 then I hope that you will like Calico as well.
cps-async-connect
ZIO - ZIO — A type-safe, composable library for async and concurrent programming in Scala
Vert.x Web - The wiki and issues for the vert-x3 organisation
dotty-cps-async - experimental CPS transformer for dotty
Udash - Scala framework for building beautiful and maintainable web applications.
tyrian - Elm-inspired Scala UI library.
OutWatch - The Functional and Reactive Web-Frontend Library for Scala.js
Laminar - Simple, expressive, and safe UI library for Scala.js
Widok - Client-server skeleton