FP Haskell Center Settings Page

FP Haskell Center settings page


These settings allow you to set project-specific options. The options related to building the project are stored in a project-settings.yml file, which will be included in git commits. Settings that apply to every IDE session can be edited via the IDE Configuration Project.


In this section of the settings page, you can set or change the project name, and provide a project description. The project description will be display when anyone browses your project.

Default Module Template

This is a simple text template that is used when you create a new module. The word MODULE_NAME will be replaced with the name of the new module.


This section of the settings page will allow you to select from a number of build environments. A build environment includes a specific version of the GHC compiler along with a set of packages available from Stackage. There are currently two available environments 1) GHC 7.4.2 stable and GHC 7.4.2 unstable. The unstable environment includes a large set of libraries that are not fully tested.

Compiler Extensions

In this section you can select compiler extensions that are normally provided as annotations in the source code. You can still use the explicit annotations in your code. To add an extention, use the dropdown box to select a module and then click on the add button. The added extension will be displayed in a list below the dropdown box. You can remove an extension by clicking on the X to the right of its name in the list.

Compiler Flags

In this section you can specify extra compliler flags to the build environment. The compiler will be called with these flags. To add flags, fill in any GHC compiler flags in the textbox provided, e.g. -Wall.

Note that some flags are not supported by our interactive environment. In particular, optimization flags (e.g., -O2) will not work correctly.

Root and Filtering

This is an experimental feature

Sometimes it is necessary to restrict the focus of your project when working in large repositories with multiple sub-projects. To temporarily change the root directory which is loaded into the IDE please enter it in the "A Directory" textbox.

It's possible to temporarily blacklist modules, files or whole directories which are not to be loaded into the IDE by entering them in the ""Prefixes of things to blacklist"" textbox. A file or direct prefix is sufficient.

Extra Packages

Including Packages

FP Haskell Center allows you to install packages for other repositories. Packages can either be installed from Hackage, Git, or from locally generated source tar files. For Hackage, write a line such as:

Hackage: acme-missiles 0.3

For Git, provide a line containing the Git repo and a specific commit SHA. Git repositories can be specified as secure web address or git URIs. When using a git URI, make sure you have set up git ssh keys in your profile. An example of a package specified from a git repo for a particular commit using a secure web address is below:

Git: https://github.com/joeyadams/hs-acme-year.git f2f60e1d555a46837249a5ae741242428427fb3a

For Git repositories access via SSH use a git URI and include the SHA of the commit you wish to load. An example Git repo using SSH and a particular commit is below:

Git: user@mygitserver.com:/path/to/project.git f2f60e1d555a46837249a5ae741242428427fb3a

On Github (or on servers using Gitolite) use the following form:

Git: git@github.com:myusername/myproject.git f2f60e1d555a46837249a5ae741242428427fb3a

The packages in the extra packages file will be loaded from top to bottom, so any depedencies should be listed before the packages dependent on them.

The second two fields are used to create a local source package that can be included in another project. Using the Git menu, you can create source distributions of FP Haskell Center projects, and then use those projects as extra packages in other projects by using the following syntax:

Local: somepackage 1.0

For a list of available local packages, see the source distribution tarballs page.

Warning: This feature is highly experimental, and can lead to confusing error messages. We will be improving the functionality going forward. In its current incarnation, it is highly recommended that you only include packages which are not part of the standard FP Haskell Center package set.

Mega Repos

A mega repo is a project consisting of Haskell subprojects. In the case of including a project into a megarepo, you can add multiple subdirectories after the SHA, such as:

Git: https://github.com/fpco/simple-mega-repo.git 1e4a2126e66850ec2868022904bfa53614d9c2ef mega1 mega2

Warning: This feature is also highly experimental, and can lead to confusing error messages. We will be improving the functionality going forward. In its current incarnation, it is highly recommended that you only include packages which are not part of the standard FP Haskell Center package set.

Hidden Packages

You can specify a list of packages that will be hidden from the project. You might want to hide packages when they contain names collide with other packages. The provided textarea takes a list of packages to hide, separated by spaces.

Emacs Configuration

To use this project from Emacs, you need to copy the configuration text in the provided textbox and put it in the root directory of your project in a file called:


Once you've done that, you can open any file in your project and it will be properly associated with this FP Haskell Center project.

Restart Backend

While this shouldn't be necessary, it's possible that things could go wrong. In the event that things are not functioning or behaving oddly, restarting the backend could help. If the problem persists, please let us know via the feedback form. To restart the backend, click on the Retart Backend button provided in this settings section.

Dangerous Stuff

This section contains operations that you might want to reconsider before executing them. Currently, this section contains one operation for deleting projects.

To delete a project, you must first know the full name of your project. If the name is wider than the sidebar to the left, you can expand the side bar by moving the mouse to the area between the side bar and the edit area and dragging the side bar to the right.

Next you can press the delete button. You will be prompted to enter the name of your project and then confirm the delete. Once you perform a delete, your project cannot be recovered.