Skip to content
JHC Haskell compiler split into reusable components
Branch: master
Clone or download
Latest commit a7dace4 Dec 17, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples move more code to common ; add examples Dec 16, 2018
jhc-app Make project compatible with Haskell Cabal Dec 16, 2018
jhc-common
jhc-compat Make project compatible with Haskell Cabal Dec 16, 2018
jhc-core Make project compatible with Haskell Cabal Dec 16, 2018
jhc-frontend Make project compatible with Haskell Cabal Dec 16, 2018
jhc-grin Make project compatible with Haskell Cabal Dec 16, 2018
lib add standard libraries Dec 14, 2018
Ideas.md add list of ideas Dec 17, 2018
LICENSE add standard libraries Dec 14, 2018
README.md Update README.md Dec 17, 2018
cabal.project Make project compatible with Haskell Cabal Dec 16, 2018
mklibs.sh Make project compatible with Haskell Cabal Dec 16, 2018
sanitize_tabs_and_spaces.sh working modularized jhc Dec 14, 2018
stack.yaml working modularized jhc Dec 14, 2018

README.md

JHC Haskell Compiler

This is a fork of JHC Haskell Compiler 0.8.2.

The source code is split into reusable components and builds with Haskell Stack.

Components

  • jhc-compat: Haskell98 compatibility library
  • jhc-common: Compiler foundation library
  • jhc-frontend: Haskell Front-End, lexer, parser, type-checker
  • jhc-core: Core language, based on Pure Type System
  • jhc-grin: Backend, C code generator, whole program optimizer, variant of GRIN intermediate language
  • jhc-app: JHC Compiler, command line interface

NOTE: lib contains the standard Haskell libraries for JHC

System Requirements

Compile & Run

Stack

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

Cabal

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

Development Ideas

Check the list of development ideas.

You can’t perform that action at this time.