shake-plus: Re-export of Shake using well-typed paths and ReaderT.

[ development, library, mit, shake ] [ Propose Tags ]

Re-export of Shake using well-typed paths and ReaderT. This is an early release so some things may be missing or broken but so far the conveniences have been worth it.

[Skip to Readme]
Versions [faq],,,,,,,,,,,,,,,,,,,,,,,,
Change log
Dependencies base (>=4.7 && <5), extra, path, rio, shake, within [details]
License MIT
Copyright 2020 Daniel Firth
Author Daniel Firth
Category development, shake
Uploaded by locallycompact at 2020-05-06T15:42:49Z
Distributions NixOS:
Downloads 3567 total (1244 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2020-05-06 [all 1 reports]


[Index] [Quick Jump]


Maintainer's Corner

For package maintainers and hackage trustees

Readme for shake-plus-

[back to package description]

Shake+ - Super Powered Shake

Attempt at a batteries included Shake. We reexport replacements for the main utility functions of Shake with the following adjustments whereever possible.

  • Well-typed paths using the path
  • New type classes MonadAction,MonadUnliftAction and MonadRules with stock ReaderT transformers.
  • Text instead of String wherever it is appropriate.

Unlifting Actions is a challenge when we cross monad boundaries (from Action to Rules), and so some functions are hard coded against the RAction type, which is a hardcoded newtype ReaderT r Action a. This is annoying, but it's sufficient to add your own logging and reader lenses. It may be possible to generalize this with some unlifting contortion but so far I haven't been able to figure it out.

The main entry point ot this library is the runShakePlus function, which collapses a ReaderT r Rules () to a Rules () and passes the environment to each underlying RAction.

This is an early release and a lot of things may be missing or broken, but so far the conveniences have been worth it. Until it's stable/complete you probaly want to import qualified Development.Shake to deal with any missing parts.