Name:                husk-scheme
Version:             3.14
Synopsis:            R5RS Scheme interpreter, compiler, and library.
Description:         
  <<https://github.com/justinethier/husk-scheme/raw/master/docs/husk-scheme.png>>
  .
  A dialect of R5RS Scheme written in Haskell. Advanced 
  features are provided including:
  .
  * First-class continuations of unlimited extent
  .
  * Hygienic macros based on syntax-rules
  .
  * Low-level explicit renaming macros 
  .
  * A foreign function interface (FFI) to Haskell
  .
  * Full numeric tower providing support for real, rational, and complex numbers
  .
  * Proper tail recursion and lexical scoping
  .
  * Read-Eval-Print-Loop (REPL) interpreter, with input driven by Haskeline to provide a rich user experience
  .
  * Standard library of Scheme functions, and support for many popular SRFI's
  .
  Husk may be used as either a stand-alone interpreter or as an extension language within a larger Haskell application. By closely following the R5RS standard, the intent is to develop a Scheme that is as compatible as possible with other R5RS Schemes. Husk is mature enough for use in production, however it is not optimized for performance-critical applications. 
  .
  Scheme is one of two main dialects of Lisp. Scheme follows a minimalist design philosophy: the core language consists of a small number of fundamental forms which may be used to implement other built-in forms. Scheme is an excellent language for writing small, elegant programs, and may also be used to write scripts or embed scripting functionality within a larger application.

License:             MIT
License-file:        LICENSE
Author:              Justin Ethier
Maintainer:          Justin Ethier <github.com/justinethier>
Homepage:            http://justinethier.github.com/husk-scheme
Bug-Reports:         http://github.com/justinethier/husk-scheme/issues
Cabal-Version:       >= 1.8
Build-Type:          Simple
Category:            Compilers/Interpreters, Language
Tested-with:         GHC == 7.2.2, GHC == 7.0.2, GHC == 6.12.3, GHC == 6.10.4

Extra-Source-Files:  README.markdown
                     ChangeLog.markdown
                     LICENSE
                     AUTHORS
Data-Files:          lib/*.scm lib/husk/*.sld lib/husk/*.scm lib/scheme/*.sld lib/srfi/*.scm

Source-Repository head
    Type:            git
    Location:        git://github.com/justinethier/husk-scheme.git

flag useffi
    description: Haskell Foreign Function Interface (FFI). Allows husk to import and call into Haskell code directly from Scheme code. Turn off FFI to decrease build times and minimize executable sizes
    default: False

flag uselibraries
    description: R7RS-style libraries. 
    default: True

flag useptrs
    description: Turn off pointers to increase performance at the expense of severely restricting the functionality of mutable variables. Setting this flag to false will revert back to the behavior from previous versions of husk.
    default: True

Library
  Build-Depends:   base >= 2.0 && < 5, array, containers, haskeline, transformers, mtl, parsec, directory, bytestring, utf8-string, time, process
  Extensions:      ExistentialQuantification
  Hs-Source-Dirs:  hs-src
  Exposed-Modules: Language.Scheme.Core
                   Language.Scheme.Environments
                   Language.Scheme.Types
                   Language.Scheme.Variables
                   Language.Scheme.Compiler
                   Language.Scheme.Compiler.Libraries
                   Language.Scheme.Compiler.Types
                   Language.Scheme.Plugins.CPUTime
                   Language.Scheme.Macro
                   Language.Scheme.Macro.ExplicitRenaming
                   Language.Scheme.Macro.Matches
                   Language.Scheme.Libraries
                   Language.Scheme.Numerical
                   Language.Scheme.Parser
                   Language.Scheme.Primitives
                   Language.Scheme.Util
  Other-Modules:   Paths_husk_scheme

  if flag(useffi)
    Build-Depends: ghc, ghc-paths
    Exposed-Modules:  Language.Scheme.FFI
    cpp-options: -DUseFfi

  if flag(uselibraries)
    cpp-options: -DUseLibraries

  if flag(useptrs)
    cpp-options: -DUsePointers

Executable         huski
  Build-Depends:   husk-scheme, base >= 2.0 && < 5, array, containers, haskeline, transformers, mtl, parsec, directory, process
  if flag(useffi)
    Build-Depends: ghc, ghc-paths
    cpp-options: -DUseFfi
  Extensions:      ExistentialQuantification
  Main-is:         shell.hs
  Hs-Source-Dirs:  hs-src/Interpreter

Executable huskc
  Build-Depends: husk-scheme, base >= 2.0 && < 5, array, containers, haskeline, transformers, mtl, parsec, directory, ghc-paths, process, filepath
  if flag(useffi)
    Build-Depends: ghc, ghc-paths
    cpp-options: -DUseFfi
  if flag(useptrs)
    cpp-options: -DUsePointers
  Extensions:      ExistentialQuantification
  Main-is: huskc.hs
  Hs-Source-Dirs: hs-src/Compiler