effekt
tofu
Our great sponsors
effekt | tofu | |
---|---|---|
13 | 2 | |
279 | 514 | |
6.1% | 0.4% | |
9.6 | 6.2 | |
5 days ago | 10 days ago | |
Scala | Scala | |
MIT License | 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.
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.
-
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
-
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.
-
"Colored" functions: pure versus impure
- https://effekt-lang.org/
-
Testimonials about the usage of Izumi BIO typeclasses
The only thing that is now missing from my ideal concept of a purely functional program with side effects is effect tracking itself. A way to guarantee that no Scala code can blockingly write to a file, unless it requires that capability in the effect "stack", like in https://effekt-lang.org/ . Would be useful to have a collection of best-effort lint rules that cover something like that.
-
Today, Thanks to this sub Reddit. I discovered 3 awesome new languages....
I'd also recommend checking out Koka and Effekt which are doing cool things with effect systems. You can see more languages in this space in this bibliography. Effect systems are pretty exciting as they can be used as an alternative to async/await (see the work on Multicore OCaml, for example).
-
Effekt, a research language with effect handlers and lightweight polymorphism
How does this compare to other effect-oriented languages like Koka, Frank, and Eff?
I've been doing some work with Koka lately, but I briefly looked into the other three (including Effekt) and it mostly came down to, 'Koka seems most active in development'[1] and 'Koka had the easiest to use documentation for me'[2].
[1] E.g. https://github.com/effekt-lang/effekt had its last commit back in June; https://github.com/frank-lang/frank last commit last year; but https://github.com/koka-lang/koka last update was Oct 15. Effekt seems semi-active, at least, compared to Frank. While stability is good, I wouldn't expect it in a language actively being used for research.
[2] Comparing https://koka-lang.github.io/koka/doc/book.html and https://effekt-lang.org/docs/ and https://www.eff-lang.org/learn/
tofu
-
Companies with interesting Scala projects
Tinkoff has a strong Scala FP presense: - https://github.com/tofu-tf/tofu - https://github.com/tofu-tf/derevo - https://github.com/tofu-tf/typed-schema
-
Monocle 3 Roadmap
Note: I believe tofu-optics uses a profunctor encoding under the hood which let them side steps some type inference issues. Better to check with Odomontois.
What are some alternatives?
koka - Koka language compiler and interpreter
Learn-by-doing functional programming course on Scala - learn-by-doing course/tutorial for functional programming on scala
Eff - Eff monad for cats - https://atnos-org.github.io/eff
effects-bibliography - A collaborative bibliography of work related to the theory and practice of computational effects
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
frank - Frank compiler
ios-application - A native, lightweight and secure one-time-password (OTP) client built for iOS; Raivo OTP!
cats-effect - The pure asynchronous runtime for Scala