io-classes-mtl: Experimental MTL instances for io-classes

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

MTL instances for io-classes package. Some of the instances are novel and some are still experimental.


[Skip to Readme]

Properties

Versions 0.1.0.0, 0.1.0.1, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.1.0, 0.1.2.0
Change log CHANGELOG.md
Dependencies array, base (>=4.9 && <4.19), io-classes (>=1.0.0.0 && <1.1), mtl, si-timers [details]
License Apache-2.0[multiple license files]
Copyright 2022-2023 Input Output Global Inc (IOG)
Author Duncan Coutts, Marcin Szamotulski
Maintainer Marcin Szamotulski coot@coot.me
Category Control
Uploaded by coot at 2023-04-20T19:05:40Z

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Readme for io-classes-mtl-0.1.0.1

[back to package description]

Experimental MTL Instance for io-classes

ReaderT instances are included in io-classes, but all other instances are included in this package. Some of them are rather novel and experimental others might be less so. This code is not well tested, and some of it hasn't run in a production environment as we know (let us know if you do!).

The MonadSTM instances for monad transformers are somewhat novel. The STM monad is transformed together with the base monad. This means that the transformer primitive operations are available in STM. For example you an STM transaction can lock updating the state of the current thread.

We haven't included MonadAsync instances (although we have an experimental branch how this could be done). It could work like the lifted-async package. But we feel this can be controversial, so it's not included.

The design goal is to follow exception package instances, but since we don't have any tests we are not very confident of this either. Contributions are welcomed!