While Pythas itself is a Python library, it contains a considerable amount of Haskell source code. This part of the library is compiled once at the first import. Therefore, it is paramount to provide a GHC installation. Note that in subsequent usages this compilation is not necessary, reducing the import time significantly. If you already have either GHC or Stack (or both) installed, skip ahead to Install Pythas.

Install Haskell

For compilation of Haskell source Pythas makes use of the Glasgow Haskell Compiler (GHC). This is the most commonly used compiler for the Haskell programming language. It comprises a multitude of extensions to the language and most existing Haskell code should therefore be supported by Pythas. However, thorough support of all GHC language extensions cannot be guaranteed and is to be considered experimental at this stage (0.1b1).

Cabal/GHC vs Stack

The GHC compiler can be installed in various ways (without claim to completeness):

  • As a bare bones compiler executable.

  • As a minimal package also including the build tools Cabal and Stack.

  • On top of the Stack build tool providing management of different GHC installs.

  • With the full blown Haskell Platform installation providing the most common libraries and build tools altogether.

If a Stack install is available, Pythas will default to utilizing it. This means that available stack.yaml files are taken into consideration providing stable and consistent compilation results. This choice implies that any other GHC installations are ignored if the stack command is found to be available. If you prefer to use ghc instead you can tell Pythas to disable stack:

from pythas import compiler
compiler.stack_usage = False
print("Stack is used: {}".format(compiler.stack_usage))

This will use whichever ghc is in the path of the directory the source file is located in. Using Cabal you can thus add the --write-ghc-environment-files=always option when using cabal build. This will create a local .ghc.environment directory with its own GHC installation and link it to the local ghc command. Then this local instance of GHC and its libraries will also be utilized by Pythas.

Install Pythas

Once either stack and/or GHC are installed, you can install Pythas.

From pip

Pythas is available for download from the Python Package Index pypi via pip:

$ pip install pythas
$ python -c "import pythas" # Will compile the Haskell source

From source

If you want to be at the newest stage of development, you can install this package from source using the following commands:

$ git clone --recurse-submodules -j8
$ cd Pythas && pip install .
$ cd ..
$ python -c "import pythas" # Will compile the Haskell source