This monorepo contains the type-level programming and extensible record libraries developed at DeepFlow, Inc., and battle-tested for more than five years. This consists of two libraries:
elgenerics-knownprovides various machinery related to singletons for dependently-typed programming in Haskell.- Central concepts:
Known(which borrows the name fromKnownNatand/orKnownSymbol) andSingtype family. - Type-level Ordered Map (
Data.TypeLevel.OrdMap) and Lists (Data.TypeLevel.List) and type-checker plugins for automatically solving their constraints.- OrdMap can be keyed with a type with any kind.
- Central concepts:
elgenerics-containersprovides higher-kinded extensible / anonymous records, heterogeneous lists, and unions.
Please feel free to open an issue, but also please search for existing issues to check if there already is a similar one.
See CONTRIBUTING.md for more details.
To add/remove a specific ghc version to/from the tested versions, you can just add/remove cabal's freeze file as ci/configs/ghc-X.X.X.project and add the following to the header:
import: ../../cabal.project
-- FIXME: Use Appropriate timestamp for index-state
index-state: hackage.haskell.org 2024-03-05T05:41:26ZNote that the actual value of index-state should be sufficiently new.
Except this, no modification to Action worklow file is needed in general.
The following is the example command to add the ghc-9.8.1 with the most recent Stackage Nightly:
curl --location https://www.stackage.org/nightly/cabal.config > ./ci/configs/ghc-9.8.1.project
cat <<EOF >>./ci/configs/ghc-9.8.1.project
import: ../../cabal.project
-- FIXME: Use an appropriate timestamp for index-state
index-state: hackage.haskell.org 2024-03-05T05:41:26Z
EOFNote that we might have to edit with-compiler stanza of the downloaded freeze file when you want to test GHC version different from Stackage's default version.
If you want to test some breeding-edge version of GHC but to allow failure, name freeze file as ghc-X.X.X-head.project.
curl --location https://www.stackage.org/nightly/cabal.config > ./ci/configs/ghc-9.10.1-head.project2019-present (c) DeepFlow, Inc.