This is a fork of JHC Haskell Compiler 0.8.2.
The source code is split into reusable components and builds with Haskell Stack.
jhc-compat
: Haskell98 compatibility libraryjhc-common
: Compiler foundation libraryjhc-frontend
: Haskell Front-End, lexer, parser, type-checkerjhc-core
: Core language, based on Pure Type Systemjhc-grin
: Backend, C code generator, whole program optimizer, variant of GRIN intermediate languagejhc-app
: JHC Compiler, command line interface
NOTE: lib contains the standard Haskell libraries for JHC
- OS: Windows/Linux/OSX
- Tools: Haskell Stack or Haskell Cabal
The instructions below are for Haskell Stack.
stack setup
stack build
stack exec -- jhc --help
To compile the standard libraries run:
stack exec -- jhc -L . --build-hl lib/jhc-prim/jhc-prim.yaml
stack exec -- jhc -L . --build-hl lib/jhc/jhc.yaml
stack exec -- jhc -L . --build-hl lib/haskell-extras/haskell-extras.yaml
stack exec -- jhc -L . --build-hl lib/haskell2010/haskell2010.yaml
stack exec -- jhc -L . --build-hl lib/haskell98/haskell98.yaml
stack exec -- jhc -L . --build-hl lib/applicative/applicative.yaml
stack exec -- jhc -L . --build-hl lib/flat-foreign/flat-foreign.yaml
To compile the examples run:
stack exec -- jhc -L . examples/Calendar.hs -o calendar
stack exec -- jhc -L . examples/HelloWorld.hs -o hello
stack exec -- jhc -L . examples/Primes.hs -o primes
The instructions below are for Haskell Cabal version 2.4.1 or later.
To (re)compile and run jhc
from within the source-tree, simply invoke
cabal v2-run jhc -- --help
To compile the standard libraries run:
cabal v2-run jhc -- -L . --build-hl lib/jhc-prim/jhc-prim.yaml
cabal v2-run jhc -- -L . --build-hl lib/jhc/jhc.yaml
cabal v2-run jhc -- -L . --build-hl lib/haskell-extras/haskell-extras.yaml
cabal v2-run jhc -- -L . --build-hl lib/haskell2010/haskell2010.yaml
cabal v2-run jhc -- -L . --build-hl lib/haskell98/haskell98.yaml
cabal v2-run jhc -- -L . --build-hl lib/applicative/applicative.yaml
cabal v2-run jhc -- -L . --build-hl lib/flat-foreign/flat-foreign.yaml
To compile the examples run:
cabal v2-run jhc -- -L . examples/Calendar.hs -o calendar
cabal v2-run jhc -- -L . examples/HelloWorld.hs -o hello
cabal v2-run jhc -- -L . examples/Primes.hs -o primes
Check the list of development ideas.