packages feed

disco-0.1.3.1: disco.cabal

cabal-version:       2.4
name:                disco
version:             0.1.3.1
synopsis:            Functional programming language for teaching discrete math.
description:         Disco is a simple functional programming language for use in
                     teaching discrete math.  Its syntax is designed to be close
                     to standard mathematical practice.
license:             BSD-3-Clause
license-file:        LICENSE
author:              Disco team
maintainer:          byorgey@gmail.com
copyright:           Disco team 2016-2022 (see LICENSE)
category:            Language

tested-with:         GHC == 8.10.4

data-dir:            lib

data-files:          *.disco

extra-source-files:  README.md, CHANGELOG.md, stack.yaml, example/*.disco, repl/*.hs
                     docs/tutorial/example/*.disco
                     --- TEST FILES BEGIN (updated automatically by add-test-files.hs) ---
                     test/README.md
                     test/Tests.hs
                     test/arith-basic-bin/expected
                     test/arith-basic-bin/input
                     test/arith-basic-un/expected
                     test/arith-basic-un/input
                     test/arith-count/expected
                     test/arith-count/input
                     test/arith-numthry/expected
                     test/arith-numthry/input
                     test/arith-prim/arith-prim.disco
                     test/arith-prim/expected
                     test/arith-prim/input
                     test/arith-round/expected
                     test/arith-round/input
                     test/case-arith/case-arith.disco
                     test/case-arith/expected
                     test/case-arith/input
                     test/case-basic/case-basic.disco
                     test/case-basic/expected
                     test/case-basic/input
                     test/case-let/case-let.disco
                     test/case-let/expected
                     test/case-let/input
                     test/compile-cons/expected
                     test/compile-cons/input
                     test/compile-misc/expected
                     test/compile-misc/input
                     test/containers-cmp/expected
                     test/containers-cmp/input
                     test/containers-comp/expected
                     test/containers-comp/input
                     test/containers-convert/expected
                     test/containers-convert/input
                     test/containers-each/expected
                     test/containers-each/input
                     test/containers-ellipsis/expected
                     test/containers-ellipsis/input
                     test/containers-filter/expected
                     test/containers-filter/input
                     test/containers-join/expected
                     test/containers-join/input
                     test/containers-merge/expected
                     test/containers-merge/input
                     test/containers-ops/expected
                     test/containers-ops/input
                     test/containers-reduce/containers-reduce.disco
                     test/containers-reduce/expected
                     test/containers-reduce/input
                     test/error-ambiguous/a.disco
                     test/error-ambiguous/ambiguous.disco
                     test/error-ambiguous/b.disco
                     test/error-ambiguous/expected
                     test/error-ambiguous/input
                     test/error-cyclic/cyclic.disco
                     test/error-cyclic/expected
                     test/error-cyclic/input
                     test/error-duplicatedecls/dupdecls.disco
                     test/error-duplicatedecls/expected
                     test/error-duplicatedecls/input
                     test/error-duplicatedefns/dupdefns.disco
                     test/error-duplicatedefns/expected
                     test/error-duplicatedefns/input
                     test/error-duplicatetydefns/duptydefns.disco
                     test/error-duplicatetydefns/expected
                     test/error-duplicatetydefns/input
                     test/error-emptycase/expected
                     test/error-emptycase/input
                     test/error-names/expected
                     test/error-names/input
                     test/error-notcon/expected
                     test/error-notcon/input
                     test/error-notype/expected
                     test/error-notype/input
                     test/error-numpatterns/expected
                     test/error-numpatterns/input
                     test/error-numpatterns/numpatterns.disco
                     test/error-pattype/expected
                     test/error-pattype/input
                     test/error-polyrec/expected
                     test/error-polyrec/input
                     test/error-polyrec/polyrec.disco
                     test/error-qualskolem/expected
                     test/error-qualskolem/input
                     test/error-qualskolem/qualskolem.disco
                     test/error-tyargs/error-tyargs.disco
                     test/error-tyargs/expected
                     test/error-tyargs/input
                     test/error-unboundtyvar/expected
                     test/error-unboundtyvar/input
                     test/error-unboundtyvar/unboundtyvar.disco
                     test/error-unqual-base/expected
                     test/error-unqual-base/input
                     test/error-unqual-base/unqualbase.disco
                     test/error-unqual/expected
                     test/error-unqual/input
                     test/error-wildcard/expected
                     test/error-wildcard/input
                     test/graphs-basic/expected
                     test/graphs-basic/input
                     test/graphs-equality/expected
                     test/graphs-equality/input
                     test/interp-loop/expected
                     test/interp-loop/input
                     test/interp-strictmatch/bomb.disco
                     test/interp-strictmatch/expected
                     test/interp-strictmatch/input
                     test/lib-oeis/expected
                     test/lib-oeis/input
                     test/list-comp/expected
                     test/list-comp/input
                     test/list-poly/expected
                     test/list-poly/input
                     test/logic-bools/expected
                     test/logic-bools/input
                     test/logic-cmp/expected
                     test/logic-cmp/input
                     test/map-basic/expected
                     test/map-basic/input
                     test/map-compare/expected
                     test/map-compare/input
                     test/module-basic/a.disco
                     test/module-basic/b.disco
                     test/module-basic/c.disco
                     test/module-basic/e.disco
                     test/module-basic/expected
                     test/module-basic/input
                     test/module-basic/subdir/d.disco
                     test/module-cycle/cyclic1.disco
                     test/module-cycle/cyclic2.disco
                     test/module-cycle/expected
                     test/module-cycle/input
                     test/module-notfound/expected
                     test/module-notfound/input
                     test/parse-245/expected
                     test/parse-245/input
                     test/parse-280/capitalvars.disco
                     test/parse-280/expected
                     test/parse-280/input
                     test/parse-320/expected
                     test/parse-320/input
                     test/parse-case-expr/expected
                     test/parse-case-expr/input
                     test/parse-nested-list/expected
                     test/parse-nested-list/input
                     test/parse-quantifiers/expected
                     test/parse-quantifiers/input
                     test/parse-top-term/expected
                     test/parse-top-term/input
                     test/parse-top-term/parse-top-term.disco
                     test/poly-bad/expected
                     test/poly-bad/input
                     test/poly-infer-sort/expected
                     test/poly-infer-sort/input
                     test/poly-instantiate/expected
                     test/poly-instantiate/input
                     test/poly-instantiate/poly-instantiate.disco
                     test/poly-rectype/expected
                     test/poly-rectype/input
                     test/poly-rectype/poly-rectype.disco
                     test/pretty-defn/expected
                     test/pretty-defn/input
                     test/pretty-functions/expected
                     test/pretty-functions/input
                     test/pretty-issue258/expected
                     test/pretty-issue258/input
                     test/pretty-lit/expected
                     test/pretty-lit/input
                     test/pretty-ops/expected
                     test/pretty-ops/input
                     test/pretty-pattern/expected
                     test/pretty-pattern/input
                     test/pretty-torture/expected
                     test/pretty-torture/input
                     test/pretty-type/expected
                     test/pretty-type/input
                     test/pretty-whnf/expected
                     test/pretty-whnf/input
                     test/prim-crash/expected
                     test/prim-crash/input
                     test/prim-frac/expected
                     test/prim-frac/input
                     test/prim-sum/expected
                     test/prim-sum/input
                     test/prop-basic/expected
                     test/prop-basic/input
                     test/prop-basic/prop-basic.disco
                     test/prop-cmp/expected
                     test/prop-cmp/input
                     test/prop-fail/bad-tests.disco
                     test/prop-fail/expected
                     test/prop-fail/input
                     test/prop-fairness/expected
                     test/prop-fairness/input
                     test/prop-higher-order/expected
                     test/prop-higher-order/higher-order.disco
                     test/prop-higher-order/input
                     test/prop-holds/expected
                     test/prop-holds/input
                     test/prop-impredicative/expected
                     test/prop-impredicative/input
                     test/prop-impredicative/prop-impredicative.disco
                     test/prop-tests/expected
                     test/prop-tests/input
                     test/prop-tests/prop-tests.disco
                     test/prop-type/expected
                     test/prop-type/input
                     test/repl-ann/expected
                     test/repl-ann/input
                     test/repl-compile/expected
                     test/repl-compile/input
                     test/repl-defn/expected
                     test/repl-defn/input
                     test/repl-defns/expected
                     test/repl-defns/input
                     test/repl-desugar/expected
                     test/repl-desugar/input
                     test/repl-doc/doc.disco
                     test/repl-doc/expected
                     test/repl-doc/input
                     test/repl-eval-tydef-import/a.disco
                     test/repl-eval-tydef-import/b.disco
                     test/repl-eval-tydef-import/expected
                     test/repl-eval-tydef-import/input
                     test/repl-help/expected
                     test/repl-help/input
                     test/repl-import/expected
                     test/repl-import/input
                     test/repl-names/expected
                     test/repl-names/input
                     test/repl-names/logic.disco
                     test/repl-names/other.disco
                     test/repl-proptest/expected
                     test/repl-proptest/input
                     test/solver-issue112/diag-iso-bad.disco
                     test/solver-issue112/expected
                     test/solver-issue112/input
                     test/syntax-abs/expected
                     test/syntax-abs/input
                     test/syntax-chain/expected
                     test/syntax-chain/inRange.disco
                     test/syntax-chain/input
                     test/syntax-clause/clauses.disco
                     test/syntax-clause/expected
                     test/syntax-clause/input
                     test/syntax-comment/expected
                     test/syntax-comment/fib.disco
                     test/syntax-comment/input
                     test/syntax-containers/expected
                     test/syntax-containers/input
                     test/syntax-decimals/expected
                     test/syntax-decimals/input
                     test/syntax-doc/expected
                     test/syntax-doc/input
                     test/syntax-doc/syntax-doc.disco
                     test/syntax-exts/expected
                     test/syntax-exts/input
                     test/syntax-exts/syntax-exts.disco
                     test/syntax-juxt-app/expected
                     test/syntax-juxt-app/input
                     test/syntax-juxt-app/juxt-app.disco
                     test/syntax-juxt-mul/expected
                     test/syntax-juxt-mul/input
                     test/syntax-juxt-mul/juxt-mul.disco
                     test/syntax-lambda-pat/expected
                     test/syntax-lambda-pat/input
                     test/syntax-lambda/expected
                     test/syntax-lambda/input
                     test/syntax-let/expected
                     test/syntax-let/input
                     test/syntax-many-args/expected
                     test/syntax-many-args/input
                     test/syntax-many-args/many-args.disco
                     test/syntax-many-clauses/expected
                     test/syntax-many-clauses/input
                     test/syntax-many-clauses/many-clauses.disco
                     test/syntax-patclause/expected
                     test/syntax-patclause/fact.disco
                     test/syntax-patclause/input
                     test/syntax-prims/expected
                     test/syntax-prims/input
                     test/syntax-prims/syntax-prims.disco
                     test/syntax-tuples/expected
                     test/syntax-tuples/input
                     test/syntax-types/expected
                     test/syntax-types/input
                     test/types-192/expected
                     test/types-192/input
                     test/types-bind/expected
                     test/types-bind/input
                     test/types-char-string/expected
                     test/types-char-string/input
                     test/types-compare/expected
                     test/types-compare/input
                     test/types-container/expected
                     test/types-container/input
                     test/types-kinds/expected
                     test/types-kinds/input
                     test/types-naked-ops/expected
                     test/types-naked-ops/input
                     test/types-numpats/expected
                     test/types-numpats/input
                     test/types-numpats/types-numpats.disco
                     test/types-ops/expected
                     test/types-ops/input
                     test/types-rational/expected
                     test/types-rational/input
                     test/types-rec/expected
                     test/types-rec/input
                     test/types-rec/types-rec.disco
                     test/types-squash/expected
                     test/types-squash/input
                     test/types-standalone-ops/expected
                     test/types-standalone-ops/input
                     test/types-toomanypats/expected
                     test/types-toomanypats/input
                     test/types-toomanypats/toomanypats.disco
                     test/types-tydef-bad/expected
                     test/types-tydef-bad/input
                     test/types-tydef-bad/types-tydef-bad.disco
                     test/types-tydef-kind/expected
                     test/types-tydef-kind/input
                     test/types-tydef-kind/types-tydef-kind.disco
                     test/types-tydef-param/expected
                     test/types-tydef-param/input
                     test/types-tydef-param/types-tydef-param.disco
                     test/types-tydef-qual/expected
                     test/types-tydef-qual/input
                     test/types-tydef-qual/tydef-qual.disco
                     test/types-tydefs/expected
                     test/types-tydefs/input
                     test/types-tydefs/types-tydefs.disco
                     --- TEST FILES END ---

build-type:          Simple

source-repository head
  type:     git
  location: git://github.com/disco-lang/disco.git

common common
  ghc-options:      -Wall
                    -Wcompat
                    -Widentities
                    -Wincomplete-uni-patterns
                    -Wincomplete-record-updates
                    -Wno-star-is-type
                    -Wpartial-fields
  default-language: Haskell2010

library
  import:              common
  ghc-options:         -flate-specialise -fspecialise-aggressively -fplugin=Polysemy.Plugin
  default-extensions:  DataKinds
                       DeriveGeneric
                       FlexibleContexts
                       FlexibleInstances
                       GADTs
                       LambdaCase
                       MultiParamTypeClasses
                       PolyKinds
                       RankNTypes
                       ScopedTypeVariables
                       TupleSections
                       TypeApplications
                       TypeOperators
                       TypeFamilies
                       ViewPatterns
  exposed-modules:
                       Disco.Syntax.Operators
                       Disco.Syntax.Prims
                       Disco.Extensions
                       Disco.Effects.Counter
                       Disco.Effects.Fresh
                       Disco.Effects.Input
                       Disco.Effects.LFresh
                       Disco.Effects.Random
                       Disco.Effects.State
                       Disco.Effects.Store
                       Disco.AST.Core
                       Disco.AST.Desugared
                       Disco.AST.Generic
                       Disco.AST.Surface
                       Disco.AST.Typed
                       Disco.Data
                       Disco.Names
                       Disco.Context
                       Disco.Report
                       Disco.Messages
                       Disco.Module
                       Disco.Parser
                       Disco.Pretty
                       Disco.Pretty.DSL
                       Disco.Pretty.Prec
                       Disco.Property
                       Disco.Desugar
                       Disco.Compile
                       Disco.Enumerate
                       Disco.Value
                       Disco.Error
                       Disco.Eval
                       Disco.Interpret.CESK
                       Disco.Subst
                       Disco.Typecheck
                       Disco.Typecheck.Constraints
                       Disco.Typecheck.Erase
                       Disco.Typecheck.Graph
                       Disco.Typecheck.Util
                       Disco.Typecheck.Solve
                       Disco.Typecheck.Unify
                       Disco.Types
                       Disco.Types.Qualifiers
                       Disco.Types.Rules
                       Disco.Util
                       Disco.Interactive.CmdLine
                       Disco.Interactive.Commands
                       Disco.Doc

  other-modules:       Paths_disco
  autogen-modules:     Paths_disco

  build-depends:       base >=4.8 && <4.17,
                       filepath,
                       directory,
                       mtl >=2.2 && <2.3,
                       megaparsec >= 6.1.1 && < 9.3,
                       parser-combinators >= 1.0.0 && < 1.4,
                       pretty >=1.1 && <1.2,
                       split >= 0.2 && < 0.3,
                       transformers >= 0.4 && < 0.7,
                       containers >=0.5 && <0.7,
                       unbound-generics >= 0.3 && < 0.5,
                       polysemy >= 1.6.0.0 && < 1.8,
                       polysemy-plugin >= 0.4 && < 0.5,
                       polysemy-zoo >= 0.7 && < 0.8,
                       lens >= 4.14 && < 5.2,
                       exact-combinatorics >= 0.2 && < 0.3,
                       arithmoi >= 0.10 && < 0.13,
                       integer-logarithms >= 1.0 && < 1.1,
                       simple-enumeration >= 0.2 && < 0.3,
                       haskeline >=0.8 && <0.9,
                       exceptions >= 0.10 && < 0.11,
                       QuickCheck >= 2.9 && < 2.15,
                       splitmix >= 0.1 && < 0.2,
                       fgl >= 5.5 && < 5.8,
                       optparse-applicative >= 0.12 && < 0.18,
                       oeis >= 0.3.10,
                       algebraic-graphs >= 0.5,
                       pretty-show >= 1.10

  hs-source-dirs:      src
  default-language:    Haskell2010

executable disco
  import:              common
  hs-source-dirs:      repl
  main-is:             REPL.hs
  build-depends:       base,
                       disco,
                       directory,
                       filepath,
                       haskeline >=0.8 && <0.9,
                       mtl >=2.2 && <2.3,
                       transformers >= 0.4 && < 0.7,
                       megaparsec >= 6.1.1 && < 9.3,
                       containers >= 0.5 && < 0.7,
                       unbound-generics >= 0.3 && < 0.5,
                       lens >= 4.14 && < 5.2,
                       optparse-applicative >= 0.12 && < 0.18,
                       oeis >= 0.3.10

  default-language:    Haskell2010

test-suite disco-tests
  import:              common
  type: exitcode-stdio-1.0
  main-is: Tests.hs
  hs-source-dirs: test
  ghc-options: -threaded
  build-depends:    base >= 4.7 && < 4.17,
                    tasty >= 0.10 && < 1.5,
                    tasty-golden >= 2.3 && < 2.4,
                    directory >= 1.2 && < 1.4,
                    filepath >= 1.4 && < 1.5,
                    process >= 1.4 && < 1.7,
                    bytestring >= 0.9 && < 0.12,
                    disco
  default-language: Haskell2010

test-suite disco-examples
  import:              common
  type: exitcode-stdio-1.0
  main-is: TestExamples.hs
  hs-source-dirs: example
  ghc-options: -threaded
  build-depends:    base >= 4.7 && < 4.17,
                    directory >= 1.2 && < 1.4,
                    filepath >= 1.4 && < 1.5,
                    process >= 1.4 && < 1.7
  default-language: Haskell2010