Name:                egison
Version:             4.0.1
Synopsis:            Programming language with non-linear pattern-matching against non-free data
Description:
  An interpreter for Egison, a **pattern-matching-oriented**, purely functional programming language.
  We can directly represent pattern-matching against lists, multisets, sets, trees, graphs and any kind of data types.
  .
  We can find Egison programs in @lib@ and @sample@ directories.
  This package also include Emacs Lisp file @elisp/egison-mode.el@.
  .
  We can do non-linear pattern-matching against non-free data types in Egison.
  An non-free data type is a data type whose data have no canonical form, a standard way to represent that object.
  It enables us to write elegant programs.
  .
  /Twin Primes/
  .
  We can use pattern-matching for enumeration.
  The following code enumerates all twin primes from the infinite list of prime numbers with pattern-matching!
  .
  <<https://raw.githubusercontent.com/egison/egison/master/images/twin-primes-w700.png>>
  .
  /Poker Hands/
  .
  The following code is the program that determines poker-hands written in Egison.
  All hands are expressed in a single pattern.
  .
  <<https://raw.githubusercontent.com/egison/egison/master/images/poker-hands-w700.png>>
  .
  /Mahjong/
  .
  We can write a pattern even against mahjong tiles.
  We modularize patterns to represent complex mahjong hands.
  .
  <<https://raw.githubusercontent.com/egison/egison/master/images/mahjong-w700.png>>
  .
  /Graphs/
  .
  We can pattern-match against graphs.
  We can write program to solve the travelling salesman problem in a single pattern-matching expression.
  .
  <<https://raw.githubusercontent.com/egison/egison/master/images/salesman-w700.png>>
  .
  Aren't thsese exciting?
  We can run these demonstrations on our website!
  Please view and try more demonstrations!
  .
  <http://www.egison.org>
  .
  Egison makes programming dramatically simple.
  Please enjoy Egison!
Homepage:            http://www.egison.org
License:             MIT
License-file:        LICENSE
Author:              Satoshi Egi, Ryo Tanaka, Takahisa Watanabe, Kentaro Honda, Mayuko Kori, Momoko Hattori
Maintainer:          Satoshi Egi <egi@egison.org>
Category:            Compilers/Interpreters
Build-type:          Simple
Cabal-version:       2.0

Extra-Source-Files:  benchmark/Benchmark.hs

Data-files:          lib/core/shell.egi
                     lib/core/*.egi lib/math/*.egi lib/math/common/*.egi lib/math/algebra/*.egi lib/math/analysis/*.egi lib/math/geometry/*.egi
                     sample/*.egi sample/sat/*.egi sample/math/geometry/*.egi sample/math/number/*.egi
                     test/*.egi test/lib/core/*.egi test/lib/math/*.egi
                     elisp/egison-mode.el


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

Library
  default-language:    Haskell2010
  Build-Depends:
      base >= 4.7 && < 5
    , array
    , random
    , containers
    , unordered-containers
    , haskeline
    , transformers
    , mtl >=2.2.1
    , parsec >= 3.0
    , megaparsec >= 7.0.0
    , parser-combinators
    , directory
    , ghc
    , ghc-paths
    , text
    , regex-tdfa
    , process
    , vector
    , split
    , hashable
    , optparse-applicative
    , prettyprinter
    , mini-egison >= 1.0.0
  if !impl(ghc > 8.0)
    Build-Depends: fail
  Hs-Source-Dirs:  hs-src
  Exposed-Modules:
                   Language.Egison
                   Language.Egison.AST
                   Language.Egison.Core
                   Language.Egison.CmdOptions
                   Language.Egison.Completion
                   Language.Egison.Desugar
                   Language.Egison.Data
                   Language.Egison.IState
                   Language.Egison.MathExpr
                   Language.Egison.MathOutput
                   Language.Egison.MList
                   Language.Egison.Parser
                   Language.Egison.Parser.SExpr
                   Language.Egison.Parser.NonS
                   Language.Egison.Pretty
                   Language.Egison.PrettyMath.AST
                   Language.Egison.PrettyMath.AsciiMath
                   Language.Egison.PrettyMath.Latex
                   Language.Egison.PrettyMath.Mathematica
                   Language.Egison.PrettyMath.Maxima
                   Language.Egison.Primitives
                   Language.Egison.Tensor
                   Language.Egison.Types
  Other-modules:   Paths_egison
  autogen-modules: Paths_egison
  ghc-options:  -O3 -Wall -Wno-name-shadowing -Wno-incomplete-patterns

Test-Suite test
  default-language:    Haskell2010
  Type:           exitcode-stdio-1.0
  Hs-Source-Dirs: test
  Main-Is:        Test.hs
  Build-Depends:
      egison
    , base >= 4.0 && < 5
    , transformers
    , mtl
    , Glob
    , HUnit
    , test-framework
    , test-framework-hunit
    , filepath
  Other-modules:   Paths_egison
  autogen-modules: Paths_egison

Benchmark benchmark
  default-language:    Haskell2010
  Type: exitcode-stdio-1.0
  Hs-Source-Dirs:  benchmark
  Main-Is: Benchmark.hs
  Build-Depends:
      egison
    , base >= 4.0 && < 5
    , deepseq
    , criterion >= 0.5
    , transformers
    , mtl
  Other-modules:   Paths_egison
  autogen-modules: Paths_egison

Executable egison
  default-language:    Haskell2010
  Main-is:             egison.hs
  Build-depends:
      egison
    , base >= 4.0 && < 5
    , array
    , containers
    , unordered-containers
    , haskeline
    , transformers
    , mtl
    , parsec >= 3.1
    , directory
    , ghc
    , ghc-paths
    , filepath
    , text
    , process
    , regex-tdfa
    , vector
    , optparse-applicative
  if !impl(ghc > 8.0)
    Build-Depends: semigroups
  Hs-Source-Dirs:      hs-src/Interpreter
  Other-modules:       Paths_egison
  autogen-modules: Paths_egison
  ghc-options:  -O3 -threaded -eventlog -rtsopts -Wall -Wno-name-shadowing

Executable egison-translate
  default-language:    Haskell2010
  Main-is:          translator.hs
  Build-depends:
      egison
    , base >= 4.0 && < 5
    , prettyprinter
    , split
  Hs-Source-Dirs:   hs-src/Tool
  ghc-options:  -Wall -Wno-name-shadowing
