Projects
I maintain over fifty projects in the Haskell ecosystem available on hackage, stackage and our public Gitlab under permissive licenses.
Featured
This section is under reconstruction, please check back later.
All Projects
aeson-with
withXField combinators for adding fields to an existing JSON value
anki-connect
Http client for anki-connect.
chassis
Minimal prelude with PolyKinds
composite-cassava
Csv parsings and printing support for composite
compdoc
Alternative composite record format for pandoc
compdoc-dhall-decoder
Dhall decoder for compdoc
composite-aeson-cofree-list
Write a Cofree [] as a JSON value with "head" and "tail" elements.
composite-aeson-throw
MonadThrow behaviour for composite-aeson-parsing
composite-dhall
WriteOnly indicators for composite-aeson
composite-lens-extra
Extra lens functions for composite records
composite-tuple
Tuple functions for composite records
composite-xstep
HKD ReaderT pattern for composite
conic-graphs
Vinyl-style extensible graphs
fcf-composite
First-class-families support for composite records
fcf-graphs
Type-level algebraic-graphs
flashblast
Dhall based flashcard generation app for anki
hashmap-throw
HashMap lokoup lifted to MonadThrow
ixset-typed-binary-instance
Binary instance for ixset-typed
ixset-typed-cassava
Decode CSV to and from IxSet-typed
ixset-typed-conversions
Conversions from ixset-typed to other containers
ixset-typed-hashable-instance
Hashable instance for ixset-typed
pandoc-dhall-decoder
A decoder for deserializing pandoc directly from a dhall text field
pandoc-throw
MonadThrow versions of some pandoc functions
path-binary-instance
Binary instance for path
path-dhall-instance
Path dhall instance
path-formatting
Formatting for the path library
path-like
Class for types that can be compiled down to a path
path-utils
Miscellaneous utils for the path library
polysemy-extra
Extra transformation functions for polysemy
polysemy-fs
Low level filesystem effects for polysemy
polysemy-fskvstore
Run a KVStore as a filesystem in polysemy
polysemy-kvstore
KVStore effect for polysemy
polysemy-kvstore-jsonfile
Run a KVStore as a JSON file in polysemy
polysemy-methodology
Domain modelling semantics for polysemy
polysemy-methodology-co-log
Logging for polysemy-methodology
polysemy-methodology-composite
Functions for using polysemy-methodology in conjunction with composite
polysemy-path
Polysemy versions of Path functions
polysemy-several
runSeveral interpreter for polysemy
polysemy-socket
Socket effect for polysemy
polysemy-uncontrolled
Evil side effects in polysemy
polysemy-video
Video processing effect for polysemy
polysemy-vinyl
Extra functions for using vinyl records in polysemy
shake-plus
Batteries included Shake using well-typed paths and typeclasses
shake-plus-extended
Experimental extensions to shake-plus
shakebook
Attempt at a shake-based static site prelude
simple-media-timestamp
A simple timestamp type
simple-media-timestamp-attoparsec
Attoparsec parser for simple-media-timestamp
simple-media-timestamp-formatting
Formatting for simple-media-timestamp
srt
SRT subtitle data format
srt-attoparsec
Attoparsec parser for SRT format.
srt-dhall
Dhall instances for srt
srt-formatting
Formatting for an SRT subtitle track
techlab
Domain modelling toolkit for problem solvers
unliftio-path
UnliftIO using well-typed paths
variable-media-field
Simple type for representing one of several media options
variable-media-field-dhall
Dhall instances for variable-media-field
variable-media-field-optics
Optics for variable-media-field
vinyl-loeb
Version of loeb's theorem for extensible records
within
A type representing a value within another path
zipper-extra
Zipper utils that weren't in Control.Comonad.Store.Zipper
Contact Us
To get in touch, use any of the contact details below.
@homotopic.tech
@locallycompact
Email: dan.firth@homotopic.tech
Phone: +447853047347