cabal-version:      2.0
name:               nom
version:            0.1.0.2
description:        Nominal-flavoured implementation of data in a context of local names, following the ideas in <https://link.springer.com/article/10.1007/s001650200016 a new approach to abstract syntax with variable binding> (see also <http://www.gabbay.org.uk/papers.html#newaas-jv author's pdfs>).
                    __The recommended landing page is "Language.Nominal", so please go there first.__ See also: a tutorial in "Language.Nominal.Examples.Tutorial"; a short development of untyped lambda-calculus in "Language.Nominal.Examples.UntypedLambda"; an example development of System F in "Language.Nominal.Examples.SystemF"; and an example development of an EUTxO-style blockchain in "Language.Nominal.Examples.IdealisedEUTxO".
homepage:           https://github.com/bellissimogiorno/nominal#readme
bug-reports:        https://github.com/bellissimogiorno/nominal/issues
author:             Murdoch J. Gabbay
maintainer:         murdoch.gabbay@gmail.com
copyright:          2020 Murdoch J. Gabbay
license:            BSD3
license-file:       LICENSE
build-type:         Custom
category:           Language, Compilers/Interpreters
synopsis:           Name-binding & alpha-equivalence
extra-source-files:
      stack.yaml
    , src/Language/Nominal/Blurb.txt
    , CHANGELOG.markdown


custom-setup
  setup-depends:
      base
    , Cabal
    , cabal-doctest >=1.0.6 && <1.1

source-repository head
  type: git
  location: https://github.com/bellissimogiorno/nominal


library
  exposed-modules:
      Language.Nominal.Utilities
      Language.Nominal.Name
      Language.Nominal.NameSet
      Language.Nominal.SMonad
      Language.Nominal.Nom
      Language.Nominal.Binder
      Language.Nominal.Abs
      Language.Nominal.Sub
      Language.Nominal.Unify
      Language.Nominal.Unique
      Language.Nominal.Equivar
      Language.Nominal.Examples.SystemF
      Language.Nominal.Examples.Graph
      Language.Nominal.Examples.IdealisedEUTxO
      Language.Nominal.Examples.UntypedLambda
      Language.Nominal.Examples.Assembly1
      Language.Nominal.Examples.Assembly2
      Language.Nominal.Examples.Style
      Language.Nominal.Examples.Tutorial
      Language.Nominal
      Language.Nominal.Properties.SpecUtilities
      Language.Nominal.Properties.NameSpec
      Language.Nominal.Properties.NameSetSpec
      Language.Nominal.Properties.NomSpec
      Language.Nominal.Properties.AbsSpec
      Language.Nominal.Properties.SubSpec
      Language.Nominal.Properties.UnifySpec
      Language.Nominal.Properties.UtilitiesSpec
      Language.Nominal.Properties.EquivarSpec
      Language.Nominal.Properties.Examples.IdealisedEUTxOSpec
      Language.Nominal.Properties.Examples.SystemFSpec
      Language.Nominal.Properties.AllTests
  hs-source-dirs:
      src
  build-depends:
    QuickCheck                        >= 2.11.3 && < 2.13.3,
    containers                        >= 0.5.11 && < 0.6.3,
    Unique                            >= 0.4.7 && < 0.5,
    extra                             >= 1.6.9 && < 1.7,
    algebra                           >= 4.3.1 && < 4.4,
    data-default                      >= 0.7.1 && < 0.8,
    finite-typelits                   >= 0.1.4 && < 0.2,
    flow                              >= 1.0.20 && < 1.1,
    syb                               >= 0.7 && < 0.8,
    base                              >= 4.7 && <5,
    TypeCompose                       >= 0.9.14 && < 0.10
  default-language: Haskell2010
  ghc-options: -Wall
               -- -Werror


test-suite nom-test
  type: exitcode-stdio-1.0
  main-is: Spec.hs
  other-modules:
      Language.Nominal.NameSpec
    , Language.Nominal.NameSetSpec
    , Language.Nominal.NomSpec
    , Language.Nominal.AbsSpec
    , Language.Nominal.SubSpec
    , Language.Nominal.UnifySpec
    , Language.Nominal.UtilitiesSpec
    , Language.Nominal.EquivarSpec
    , Language.Nominal.Examples.SystemFSpec
    , Language.Nominal.Examples.IdealisedEUTxOSpec
  hs-source-dirs:
      test
  ghc-options: -Wall
               -- -Werror
  build-depends:
      base >=4.7 && <5
    , data-default
    , hspec
    , nom
    , QuickCheck
  build-tool-depends:
      hspec-discover:hspec-discover
  default-language: Haskell2010

test-suite nom-doctest
  type:             exitcode-stdio-1.0
  main-is:          DocTest.hs
  hs-source-dirs:
      doctest
  build-depends:
      base
    , base-compat       >=0.10.5 && <0.12
    , doctest           >=0.15   && <0.17
    , nom
    , template-haskell
  ghc-options:      -Wall -threaded
  default-language: Haskell2010