typelet-0.1.0.0: typelet.cabal
cabal-version: 2.4
build-type: Custom
name: typelet
version: 0.1.0.0
synopsis: Plugin to faciliate type-level let
description: For a certain class of programs, type-level let is essential
in order to be able to write these programs in such a way
that they do not result in ghc core that is quadratic in
size. Type-level let is not explicitly supported in ghc,
but we can encode it. The @typelet@ library provides a
type-checker plugin that makes the encoding more convenient
to use as well as more effective.
bug-reports: https://github.com/well-typed/typelet/issues
license: BSD-3-Clause
author: Edsko de Vries
maintainer: edsko@well-typed.com
copyright: Well-Typed LLP, Juspay Technologies Pvt Ltd
category: Plugin
extra-source-files: CHANGELOG.md
source-repository head
type: git
location: https://github.com/well-typed/typelet
custom-setup
setup-depends:
base >= 4 && <5
, cabal-doctest >= 1 && <1.1
library
exposed-modules:
TypeLet
TypeLet.UserAPI
TypeLet.Plugin
other-modules:
TypeLet.Plugin.Constraints
TypeLet.Plugin.GhcTcPluginAPI
TypeLet.Plugin.NameResolution
TypeLet.Plugin.Substitution
build-depends:
base >= 4.13 && < 4.17
, ghc-tcplugin-api >= 0.6 && < 0.7
-- whichever versions are bundled with ghc:
, containers
, ghc
hs-source-dirs:
src
default-language:
Haskell2010
default-extensions:
DataKinds
DeriveFunctor
FlexibleInstances
GADTs
KindSignatures
LambdaCase
MultiParamTypeClasses
PolyKinds
RankNTypes
RecordWildCards
ScopedTypeVariables
TupleSections
other-extensions:
CPP
ghc-options:
-Wall
test-suite test-typelet
default-language:
Haskell2010
default-extensions:
DataKinds
FlexibleContexts
FlexibleInstances
GADTs
KindSignatures
MultiParamTypeClasses
PolyKinds
RankNTypes
ScopedTypeVariables
StandaloneDeriving
TypeApplications
TypeFamilies
TypeOperators
UndecidableInstances
type:
exitcode-stdio-1.0
hs-source-dirs:
test
main-is:
TestTypeLet.hs
other-modules:
Test.Infra
Test.Sanity
Test.WithoutPlugin
if flag(include-size-tests)
-- Currently the size tests are built, but not actually part of the test
-- suite proper. We are just interested in the size of their core.
other-modules:
Test.Size.Ap.Baseline.Baseline010
Test.Size.Ap.Baseline.Baseline020
Test.Size.Ap.Baseline.Baseline030
Test.Size.Ap.Baseline.Baseline040
Test.Size.Ap.Baseline.Baseline050
Test.Size.Ap.Baseline.Baseline060
Test.Size.Ap.Baseline.Baseline070
Test.Size.Ap.Baseline.Baseline080
Test.Size.Ap.Baseline.Baseline090
Test.Size.Ap.Baseline.Baseline100
Test.Size.Ap.Index.Ix010
Test.Size.Ap.Index.Ix020
Test.Size.Ap.Index.Ix030
Test.Size.Ap.Index.Ix040
Test.Size.Ap.Index.Ix050
Test.Size.Ap.Index.Ix060
Test.Size.Ap.Index.Ix070
Test.Size.Ap.Index.Ix080
Test.Size.Ap.Index.Ix090
Test.Size.Ap.Index.Ix100
Test.Size.Ap.Let.Let010
Test.Size.Ap.Let.Let020
Test.Size.Ap.Let.Let030
Test.Size.Ap.Let.Let040
Test.Size.Ap.Let.Let050
Test.Size.Ap.Let.Let060
Test.Size.Ap.Let.Let070
Test.Size.Ap.Let.Let080
Test.Size.Ap.Let.Let090
Test.Size.Ap.Let.Let100
Test.Size.HList.Baseline.Baseline010
Test.Size.HList.Baseline.Baseline020
Test.Size.HList.Baseline.Baseline030
Test.Size.HList.Baseline.Baseline040
Test.Size.HList.Baseline.Baseline050
Test.Size.HList.Baseline.Baseline060
Test.Size.HList.Baseline.Baseline070
Test.Size.HList.Baseline.Baseline080
Test.Size.HList.Baseline.Baseline090
Test.Size.HList.Baseline.Baseline100
Test.Size.HList.Index.Ix010
Test.Size.HList.Index.Ix020
Test.Size.HList.Index.Ix030
Test.Size.HList.Index.Ix040
Test.Size.HList.Index.Ix050
Test.Size.HList.Index.Ix060
Test.Size.HList.Index.Ix070
Test.Size.HList.Index.Ix080
Test.Size.HList.Index.Ix090
Test.Size.HList.Index.Ix100
Test.Size.HList.LetAs.LetAs010
Test.Size.HList.LetAs.LetAs020
Test.Size.HList.LetAs.LetAs030
Test.Size.HList.LetAs.LetAs040
Test.Size.HList.LetAs.LetAs050
Test.Size.HList.LetAs.LetAs060
Test.Size.HList.LetAs.LetAs070
Test.Size.HList.LetAs.LetAs080
Test.Size.HList.LetAs.LetAs090
Test.Size.HList.LetAs.LetAs100
Test.Size.HList.LetAsCPS.LetAsCPS010
Test.Size.HList.LetAsCPS.LetAsCPS020
Test.Size.HList.LetAsCPS.LetAsCPS030
Test.Size.HList.LetAsCPS.LetAsCPS040
Test.Size.HList.LetAsCPS.LetAsCPS050
Test.Size.HList.LetAsCPS.LetAsCPS060
Test.Size.HList.LetAsCPS.LetAsCPS070
Test.Size.HList.LetAsCPS.LetAsCPS080
Test.Size.HList.LetAsCPS.LetAsCPS090
Test.Size.HList.LetAsCPS.LetAsCPS100
build-depends:
base
, typelet
, tasty
, tasty-hunit
, tasty-quickcheck
ghc-options:
-Wall
-- To use the doctest tests, enable flag build-doctest-examples
test-suite doctest-typelet
type:
exitcode-stdio-1.0
default-language:
Haskell2010
hs-source-dirs:
doctest
main-is:
DoctestTypeLet.hs
build-depends:
base
, doctest
, typelet
x-doctest-components:
exe:doctest-examples-typelet
if !flag(build-doctest-examples)
buildable: False
executable doctest-examples-typelet
main-is:
DoctestExamplesTypeLet.hs
default-language:
Haskell2010
default-extensions:
FlexibleContexts
hs-source-dirs:
doctest-examples
build-depends:
base
, typelet
ghc-options:
-Wwarn
if !flag(build-doctest-examples)
buildable: False
Flag build-doctest-examples
Description: Build doctest-examples-typelet (for testing only)
Default: False
Flag include-size-tests
Description: Include size tests in the test suite
Default: True