effects-bibliography
effekt
effects-bibliography | effekt | |
---|---|---|
5 | 13 | |
909 | 288 | |
- | 2.8% | |
7.2 | 9.7 | |
19 days ago | 8 days ago | |
Scala | ||
- | 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.
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.
effekt
-
What the imperative shell of an Functional Core/Imperative Shell language looks like
I like it. Modern languages that distinguish between pure and impure programs like Flix, Koka, and Effekt do so on the type level instead of syntactically. This has three advantages:
-
Algebraic Effects: Another mistake carried through to perfection?
The problem with checked exceptions been identified and solved. The same problem and solution applies to effect handlers. Effekt is a language with lexical effect handlers which doesn't have this problem. Consider the following program in Effekt:
-
Is continuation passing style conversion still used as an intermediate language?
Yes, for you this is the right decision. But for us going to CPS makes everything significantly easier and in cases where you do use control effects significantly faster. For our language Effekt we are exploring different tradeoffs in different backends.
-
The Registers of Rust - Without boats, dreams dry up
This pattern they observe is nicely captured by effect handlers. These examples are written in Effekt.
-
An approach to manual memory management and side effect handling system, feedback, ideas and thoughts requested
This is beyond my level of expertise. But effect tracking? There are some cool languages out there that do that consistently! Search for "algebraic effects". My favorite is Koka. Effekt also seems to be a popular choice.
-
Let's collect relatively new research programming languages in this thread
https://effekt-lang.org/ A research language with effect handlers and lightweight effect polymorphism
-
Is there a garbage collected, statically typed language, that has null safety, and doesn't use exceptions?
Examples are languages like Koka, Effekt, Links, or Unison. These languages come with a type-and-effect system: a function's type not only tell you which values the function accepts and which values it returns, but also which effects it has. This is relevant to your question, because throwing an exception is one such effect.
-
The Val Object Model: Template for a possible future Swift object model
It seems that with Effekt we are pursuing the same goal, but coming from the opposite direction, perhaps one day we will meet in the middle :). We start from a purely functional language and carefully add effects like mutation.
- Is there a pure-functional ML?
-
"Colored" functions: pure versus impure
- https://effekt-lang.org/
What are some alternatives?
ocaml-multicore - Multicore OCaml
koka - Koka language compiler and interpreter
Eff - Eff monad for cats - https://atnos-org.github.io/eff
frank - Frank compiler
tofu - Functional programming toolbox
functional-programming-jargon - Jargon from the functional programming world in simple terms!
hylo - The Hylo programming language
cooltt - 😎TT
ZIO - ZIO — A type-safe, composable library for async and concurrent programming in Scala
pony-tutorial - :horse: Tutorial for the Pony programming language
distage-example - Example project built using distage, tagless final, http4s, doobie and zio