fore
Aaron Stump
Fall 2014

This is an implementation of F-omega-rec, which is F-omega 
plus global positive-recursive type definitions.

To compile fore, you will need Agda 2.4.2.1.  Then just run "make".  
It may take several minutes to compile.

fore checks definitions in a single .fore file named on the command
line, and outputs .rkt (Racket) and .hs (Haskell) files.

There is no import/include/module system, unfortunately.
----------------------------------------------------------------------
To run:

  ./my-fore-main church/nats.fore

Command-line options: --countReductions will instrument the .rkt and .hs
files to count reductions.
----------------------------------------------------------------------
Examples:

See files like church/nats.fore, parigot/nats.fore, etc.
----------------------------------------------------------------------
The code:

The main code is in my-fore-main.agda.  It relies on code generated by
a parser-generator we are working on at Agda called gratr.  That code
is in fore.agda and fore-types.agda.

----------------------------------------------------------------------
Compilation and debugging notes:

To get just a parser, compile fore-main.agda.

The Makefile shows how to compile my-fore-main and fore-main.

To compile a profiling version:
   	 rm -rf MAlonzo
	 agda.sh -v 0 -c --ghc-flag=-prof --ghc-flag=-fprof-auto --ghc-flag=-rtsopts fore-main.agda
Then run like this:
     	 ./fore-main +RTS -p -RTS nat.fore	
----------------------------------------------------------------------
mergeSort.agda

To check this, run 

agda -i lib -i . mergeSort.agda

with Agda 2.4.2.2