effectful
ghcup-hs
Our great sponsors
effectful | ghcup-hs | |
---|---|---|
21 | 25 | |
329 | 251 | |
5.8% | 4.4% | |
8.0 | 9.4 | |
8 days ago | 9 days ago | |
Haskell | Haskell | |
BSD 3-clause "New" or "Revised" License | GNU Lesser General Public License v3.0 only |
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.
effectful
-
Haskell in Production: Standard Chartered
Also a much simpler alternative in my opinion to monad transformers is effectful:
https://github.com/haskell-effectful/effectful
Here's a talk on it:
https://www.youtube.com/watch?v=BUoYKBLOOrE
-
The "Services" design pattern
effectful got rid of all issues I listed (I expanded a little on it here).
-
effectful and polysemy users: How do you test? Any of "same as mtl", "novel ways enabled by effects", or "same but more efficiently because..."? Please share experiences
There is also a long document on Issues with the Transformer/mtl library.
-
Haskell ecosystem questions.
cats-effects -> https://github.com/haskell-effectful/effectful
-
How to Handle My Horrible Haskell: Global State
I think ReaderT over IO or an algebraic effect system that uses it under the hood like effectful is the way to go. However, you mentioned redux, so perhaps you'd be comfortable with organizing things using TEA (the elm architecture)? You would have actions that different components listen to , and your async stuff could be handled using subscriptions.
-
Real world applications with tagless-final, ReaderT, and three-layers
API for basic usage is very similar, but things quickly go south once you want to use higher order effects (i.e. effects that make use of the m type parameter). A lot of things then become very hard to write due to complex types or outright impossible (this issue is a good example - a reasonable thing to do that is very straightforward to write with effectful, apparently impossible to do with polysemy).
-
How to Lose Functional Programming at Work
> Lets say you have a huge overly-convoluted Haskell program. Somewhere deep down a call hierachy of pure functions you need to print something to the console. That is not easy to refactor.
> Or vice-versa you have a huge convoluted program where everything happens inside an IO monad because at some point something is written to the console. Now you realize you dont need to write to the console.
These problems are essentially completely resolved these days by a modern effect system like effectful. Basically, they allow you to do arbitrary effects deep down a call stack with minimal plumbing (you still have adjust the types, as you should: that's the point of effect tracking!) and also to remove effects, so you can easily convert between pure code and "effectful code that just so happens to do no effects".
https://github.com/haskell-effectful/effectful
-
Published my first Haskell library on Hackage: xdg-basedir-compliant
Also note that Polysemy has some really bad performance characteristics. Don't know how much of a problem it could be at such a small scale, but if you need to use an effect system, maybe something faster like effectful would be a better choice.
-
Effectful | Paweł Szulc | Lambda Days 2022
See also https://github.com/haskell-effectful/effectful/issues/99.
-
Monad transformer libraries
FYI, transformers and mtl have several subtle traps. You can read about them here.
ghcup-hs
-
How to Send an SMS in Haskell (2017)
I'd recommend using ghcup to install Haskell nowadays. (https://www.haskell.org/ghcup/) It makes it easy to install and switch versions of the compiler, language server, and build tools.
-
Revisiting Haskell after 10 years
The compiler now shows more helpful error messages and GHCup allows us to manage multiple versions of GHC, Stack, and HLS (Haskell Language Server) in a breeze. Compilation time is faster now, but I believe it is because hardware has become faster over the years. Unfortunately, cross-compiling is not yet as simple.
-
-❄️- 2023 Day 5 Solutions -❄️-
Install Haskell using GHCup. In days of old installing Haskell used to be a pain, but nowadays Haskell comes with a self-isolated thing call ghcup - you install it once, and then it installs the rest of the universe in its own isolated directory that can be independently deleted or updated without affecting the rest of your system.
-
Need Help with getting Haskell onto my Windows Laptop
Try this https://www.haskell.org/ghcup/ but with Window's WSL2.
-
Issues writing programs using Haskell
I've downloaded GHCup, hls and stack from the command from this link https://www.haskell.org/ghcup/
- Ghcup: Manage Haskell GHC, Cabal, Stack in TUI
-
ghcup: command not found
The instructions to install ghcup are here: https://www.haskell.org/ghcup/
- Buch Empfehlungen für Programmierung (nicht sprachspezifisch - nur konzeptionell)
-
Neovim: How to get variable type hinting?
I have been using helix with ghcup installed ghc(s) and language servers. It works with Haskell out of box, no configuration necessary. Helix is a modal editor, similar to but distinctly different from the vi family. Although a long time vim user I have found the switch to helix not too difficult and definitely worth the trouble.
-
GHC as an admin user
What method were you thinking of using? The recommended method is ghcup
What are some alternatives?
godot-haskell - Haskell bindings for GdNative
stack - The Haskell Tool Stack
cleff - Fast and concise extensible effects
TermuxArch - Experience the pleasure of the Linux command prompt in Android, Chromebook, Fire OS and Windows on smartphone, smartTV, tablet and wearable https://termuxarch.github.io/TermuxArch/
unliftio - The MonadUnliftIO typeclass for unlifting monads to IO
cabal2nix - Generate Nix build instructions from a Cabal file
ghc-proposals - Proposed compiler and language changes for GHC and GHC/Haskell
termux-packages - A package build system for Termux.
hpqtypes-effectful - Effectful bindings for hpqtypes
ghc-dump - A GHC plugin and library for analysing GHC Core
PolysemyCleanArchitecture - Showcasing how the Polysemy library can be used to implement a REST application conforming to the guidelines of the Clean Architecture model.
Cabal - Official upstream development repository for Cabal and cabal-install