effects-bibliography
Coeffect
effects-bibliography | Coeffect | |
---|---|---|
5 | 7 | |
913 | 14 | |
- | - | |
7.2 | 0.0 | |
19 days ago | over 1 year ago | |
Java | ||
- | 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.
effects-bibliography
-
Better Java logging, inspired by Clojure and Rust
In addition to those 2 (which I think have phenomenal documentation), the language Eff has more theoretical introduction. There is also the Effect bibliography which has a lot of different effect system in different languages, as well as tutorials and academic papers on the subject.
- How Side Effects Work in FP
- Effects bibliography – bibliography of work related to computational effects
-
Effekt, a research language with effect handlers and lightweight polymorphism
I think it goes back to the neverending quest to find ways of representing computation that allows of ease of composition, changing implementation details, eliminating classes of errors by construction, etc. Monads have had some success in this arena, but they have notable issues with composition; monad transformers help, but can become unwieldy in their own ways.
An alternative are effects, hypothetically allowing for ease in building programs as separate but composeable components which can then be freely mixed in or swapped out. In practice I have found working with effect systems in Haskell via libraries stresses the type system so much you end up with scoped type variables and type applications everywhere. My understanding is that the theory behind using effects to structure computations comes from category theory's Lawvere theories (see e.g. Pretnar's 2010 dissertation on https://github.com/yallop/effects-bibliography). Lawvere theories give rise to many monads (see Bartosz Milewski's article on it -- https://bartoszmilewski.com/2017/08/26/lawvere-theories/), but with nicer compositional properties.
This is where languages like Effekt, Eff, Frank, and Koka come in -- by writing the entire language and type system to support the theories, a lot of the pain of expressing it in Haskell can be avoided.
-
Multicore OCaml: February 2021 with new preprint on Effect Handlers
Not really an answer but Jeremy Yallop maintains a bibliography on the theory and practice of computational effects.
Coeffect
-
How to create annotatino to restrict use of functions, similarly to `@Compose`
I created this exact plugin for Java (currently it is not ready for production because it uses preview features for Java's concurrency): https://github.com/Holo314/Coeffect
-
“Don’t listen to language designers”
I implemented a Coeffect system into Java, and encounter a problem with the 4th type system of Java (yes, there are 4 separate type systems in Java), the annotations type system. For the exact problem see this section. There are walk arounds, but they boil down to implement generics on the annotation level, which is a huge amount of work and I didn't have the time to implement it yet (and it doesn't help that ExtentValues weren't on the main branch when I made it, and they are still incubator now, with a different name)
-
Indentation limbo
I am not really active on public domain (all of my work is on private domain), but See this for example.
-
Why is `suspend` a language keyword, but @Composable and @Serializable are annotations
I am all in favour to more third side libraries adding functionalities, like Lombok, Manifold and error prone. As well as smaller projects like this shameless plug and what appears in this list
-
Better Java logging, inspired by Clojure and Rust
For Coeffects there is much less available material and most of it is much more mathematical heavy, but you can try to read about it here. I'll also have a shameless plug of my Java plugin that adds implicit parameter Coeffect into Java's type system
-
Adding Coeffect System to Java with Project Loom
Using the fact that ExtentLocals have a structured lifetime, I created a Coeffect Type System using Java Compiler Plugin. I would love some feedback
What are some alternatives?
effekt - A research language with effect handlers and lightweight effect polymorphism
PipelinR - PipelinR is a lightweight command processing pipeline ❍ ⇢ ❍ ⇢ ❍ for your Java awesome app.
ocaml-multicore - Multicore OCaml
koka - Koka language compiler and interpreter
frank - Frank compiler
functional-programming-jargon - Jargon from the functional programming world in simple terms!