-
Notifications
You must be signed in to change notification settings - Fork 29
/
husk-scheme.cabal
136 lines (122 loc) · 5.56 KB
/
husk-scheme.cabal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
Name: husk-scheme
Version: 3.20
Synopsis: R5RS Scheme interpreter, compiler, and library.
Description:
<<https://github.com/justinethier/husk-scheme/raw/master/docs/husk-scheme.png>>
.
Husk is a dialect of Scheme written in Haskell that implements a superset of
the R5RS standard. Advanced features are provided including:
.
* First-class continuations of unlimited extent
.
* Hygienic macros based on syntax-rules
.
* Low-level explicit renaming macros
.
* Library syntax from the R7RS standard
.
* 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.
.
For documentation and examples, see
<http://justinethier.github.io/husk-scheme/documentation.html>.
.
For detailed information on each release, see
<http://justinethier.github.io/husk-scheme/news.html>.
License: MIT
License-file: LICENSE
Author: Justin Ethier
Maintainer: Justin Ethier <github.com/justinethier>
Homepage: http://justinethier.github.io/husk-scheme
Bug-Reports: http://github.com/justinethier/husk-scheme/issues
Cabal-Version: >= 1.10
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 lib/srfi/*.sld
Source-Repository head
Type: git
Location: git://github.com/justinethier/husk-scheme.git
flag usedebug
description: Include debug trace statements in compiled code.
default: False
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 older versions of husk.
default: True
Library
Default-Language: Haskell2010
Build-Depends: base >= 2.0 && < 5, array, containers, haskeline, transformers, mtl, parsec, directory, bytestring, utf8-string, time, process, knob
Default-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(usedebug)
cpp-options: -DUseDebug
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
Default-Language: Haskell2010
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
Default-Extensions: ExistentialQuantification
Main-is: shell.hs
Hs-Source-Dirs: hs-src/Interpreter
Other-Modules: Paths_husk_scheme
Executable huskc
Default-Language: Haskell2010
Build-Depends: husk-scheme, base >= 2.0 && < 5, array, containers, haskeline, transformers, mtl, parsec, directory, ghc-paths, process, filepath
if flag(usedebug)
cpp-options: -DUseDebug
if flag(useffi)
Build-Depends: ghc, ghc-paths
cpp-options: -DUseFfi
if flag(useptrs)
cpp-options: -DUsePointers
Default-Extensions: ExistentialQuantification
Main-is: huskc.hs
Hs-Source-Dirs: hs-src/Compiler
Other-Modules: Paths_husk_scheme