name:                sessiontypes
version:             0.1.2
synopsis:            Session types library
description:         This packages provides a deep embedded domain-specific language for writing session typed program.
                     A session typed program is a program annotated with session types. A session type describes a communication protocol at the type-level.
                     The motivation for doing so is that it gives you a static guarantee that a program correctly implements a protocol.
                     It may even guarantee that no deadlocking can occur.
homepage:            https://github.com/Ferdinand-vW/sessiontypes#readme
license:             GPL-3
license-file:        LICENSE
author:              Ferdinand van Walree
maintainer:          Ferdinand van Walree
copyright:           2017 Ferdinand van Walree
category:            Control
build-type:          Simple
extra-source-files:  ChangeLog
cabal-version:       >=1.10

library
  hs-source-dirs:      src
  exposed-modules:     Control.SessionTypes
                     , Control.SessionTypes.Codensity
                     , Control.SessionTypes.Visualize
                     , Control.SessionTypes.Debug
                     , Control.SessionTypes.MonadSession
                     , Control.SessionTypes.Normalize
                     , Control.SessionTypes.Indexed
                     , Control.SessionTypes.Interactive
                     , Control.SessionTypes.STTerm
                     , Control.SessionTypes.Types
  ghc-options:        -fno-warn-partial-type-signatures
  build-depends:       base         >= 4.7 && < 5
                     , deepseq      >= 1.4 && < 1.5
                     , diagrams-lib >= 1.4 && < 1.5
                     , diagrams-svg >= 1.4 && < 1.5
                     , mtl          >= 2.2 && < 2.3
                     , transformers >= 0.5 && < 0.6
                     , vector       >= 0.12 && < 0.13
  default-language:    Haskell2010


test-suite sessiontypes-debug
  type:                exitcode-stdio-1.0
  main-is:             Test/Debug/Main.hs
  hs-source-dirs:      test
  other-modules:       Test.Program.Simple
                     , Test.Program.FileServer
  build-depends:       base      >= 4.7 && < 5
                     , sessiontypes
                     , hspec     >= 2.4.4 && < 2.5
                     , directory >= 1.3 && < 1.4
  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
  default-language:    Haskell2010

test-suite sessiontypes-normalize
  type:                exitcode-stdio-1.0
  main-is:             Test/Normalize/Main.hs
  hs-source-dirs:      test
  other-modules:       Test.Program.Normalizable
  build-depends:       base      >= 4.7 && < 5
                     , sessiontypes
                     , hspec     >= 2.4.4 && < 2.5
                     , directory >= 1.3 && < 1.4
  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
  default-language:    Haskell2010


test-suite sessiontypes-interactive
  type:                exitcode-stdio-1.0
  main-is:             Test/Interactive/Main.hs
  hs-source-dirs:      test
  other-modules:       Test.Program.FileServer
  build-depends:       base       >= 4.7 && < 5
                     , sessiontypes
                     , hspec      >= 2.4.4 && < 2.5
                     , directory  >= 1.3 && < 1.4
                     , exceptions >= 0.8.3 && < 0.9.0
  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
  default-language:    Haskell2010

Executable test-visualizer
  main-is:        Test/Visualize/Main.hs
  hs-source-dirs: test
  build-depends:  base
                , sessiontypes
  default-language: Haskell2010

source-repository head
  type:     git
  location: https://github.com/Ferdinand-vW/sessiontypes