Small Haskell alternative prelude based on Protolude and Intro
(At least it is not a monad tutorial)
There are some great alternative preludes around but I find most of them either too large or too opinionated. What I'd rather have is a minimal prelude and then layer additional changes over it. Obviously if the other preludes suit you better, then Verset is not for you :)
- Very small
- Minimal dependencies
- Removes partial functions where possible
- It be easy to switch from
Versetto other preludes
catch,finallyetc are not exported. This makes it easier to use e.g.Control.Exception.Safe,UnliftIO.Exceptionetc for safer exception without having to hide all the defaults- No transformers are exposed but
liftis - Simple
IsStringhelpers (from Protolude) identityrather thanid(from Protolude)Stringis not exported use[Char]. This is to discourage its use.
If you want to use Verset but would rather avoid imports in all your modules. There are at least two optios
- Create a module with the imports you always use and import that along with Verset
{-# LANGUAGE NoImplicitPrelude #-}
module Verse
( (Control.Lens.^.)
, (Control.Lens.^..)
) where
import Verset
import qualified Control.Lensmodule Demo where
import Verset
import Verse
import qualified Whatever as W- Similar to the method above but reexport verset
{-# LANGUAGE NoImplicitPrelude #-}
module Verse
( module Verset
, (Control.Lens.^.)
, (Control.Lens.^..)
) where
import Verset
import qualified Control.Lensmodule Demo where
import Verse
import qualified Whatever as WPersonally I happy with imports as I think it makes the code more explicit. However if you want to avoid them using something like the above methods I think there are still benefits to Verset.
- Verset is not getting in your way.
- You can define company wide defaults, project wide defaults or both
Tested with GHC 8.7.10, 9.0.1 and 9.2.1