Skip to content
compiler with polyhedral optmization for a lazy functional programming language
Haskell Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app
src
stg-programs
test
.gitignore
LICENSE
Main
README.md
Setup.hs
generate-haddocks.sh
set_llvm_paths.source
simplexhc.cabal
stack.yaml

README.md

Simplexhc

Note: this codebase is now being developed in C++: simplexhc-cpp.

This is supposed to be a simple compiler for a lazy functional programming language like haskell Core (hence "hc" = "haskell compiler"). simplex so it is vaguely related to polyhedral compilation.

I am trying to verify if ideas in polyhedral compilation can be used on lazy programming languages, by trying to go the Core -> STG -> LLVM route.

Currently, I'm trying to implement a full STG interpreter with eval/apply semantics (not push/enter), since that's what GHC uses.

The master head is push/enter, since I wanted to understand this first, and then move on to eval/apply.

I wish to model the sum & product types in STG as spaces, perhaps modeled with integer polyhedra, so I can reuse the machinery of isl. This doesn't really work, since isl needs affine maps, and I don't think there's a reasonable interpretation of "affine" that works to analyse parallelism for lazy languages. Some of the ideas are written down in my repo: bollu/dependence-analysis-hask

You can’t perform that action at this time.