News aggregator


General haskell list - Wed, 04/01/2015 - 7:07am
Three of us have been working on Arion for a week or two now. It's a watcher and runner for Hspec tests. It associates source files with test files, watches the file system, and when a file changes it runs the corresponding test files instead of running all the test files, making the process of red-green-refactor faster. We are happy to announce that we have a nice and stable version ( Thanks to the folks at for listing our project on their website. To know more, please visit - Feedback/Feature Requests/Everything else welcome. _______________________________________________ Haskell mailing list Haskell< at >
Categories: Incoming News

An Easy Solution to PVP Bounds and Cabal Hell

haskell-cafe - Wed, 04/01/2015 - 5:22am
Recently there has been some discussion about how we can fix the problem of “Cabal Hell”. Some people advocate restrictive upper bounds, to prevent packages from being broken by new updates. Some other people point out that too-restrictive bounds can lead to bad install plans, since some packages might want newer versions of some dependencies, and others older versions. Still other people say that we can _retroactively_ fix upper bounds (in either direction) by modifying cabal files using the new features in Hackage. Some people think this is a terrible idea because it looks like we are mutating things, and this confuses hashes. In turn, these people support either nix or a nix-like approach by which packages have hashes that encompass the full versions of all their transitive dependencies. With that in hand, we can cache builds and mix-and-match to build the precise environment we want for each package while reducing redundant computation. However, the cache of all the various binary combinations may st
Categories: Offsite Discussion

Philip Wadler: Pension cuts - respond to USS

Planet Haskell - Wed, 04/01/2015 - 4:28am

The UCU has lain down its placards and ended the strike to avoid cuts to pensions. Our one remaining hope is for members to make their outrage known in the USS consultation exercise, which ends 22 May 2015. I hope everyone with a USS pension will respond. Suggested responses from UCU Left and UCU are linked; please comment below, especially to list other suggested responses.

Universities UK argue that the reductions are necessary to avoid a deficit, but their claim has been widely criticised. A group of prominent statisticians point out Universities UK inflated the deficit by assuming a buoyant economy when predicting future salaries but assuming a recession when predicting investment returns.

In 2011, Universities UK imposed vastly reduced pensions on new hires. Old hires who pay into the pension fund for forty years receive a pension of one-half their final salary; new hires who do the same receive a pension of one-half their average salary. Basing pensions on average rather than final salary may be sensible, but to do so with no little or no adjustment in multiplier suggests employers used this as an excuse to slip in a large cut; new hires receive about 2/3 the benefits received by old hires. All staff also suffered other cuts to pensions: additional caps and less good adjustment for inflation. At the time, it was predicted that within a few years old hires would be moved to the inferior scheme for new hires, and that is what has now come to pass.

Like many in USS, employees and employers alike, I am concerned that the changes will make UK academia a less attractive option for potential scholars.

Categories: Offsite Blogs

Journal of Functional Programming - Call for PhD Abstracts

Haskell on Reddit - Wed, 04/01/2015 - 2:20am


Journal of Functional Programming

Deadline: 30th April 2015


Many students complete PhDs in functional programming each year, but there is currently no common location in which to promote and advertise the resulting work. The Journal of Functional Programming would like to change that!

As a service to the community, JFP recently launched a new feature, in the form of a regular publication of abstracts from PhD dissertations that were completed during the previous year. The abstracts are made freely available on the JFP website, i.e. not behind any paywall, and do not require any transfer for copyright, merely a license from the author.

Please submit dissertation abstracts according to the instructions below. A dissertation is eligible if parts of it have or could have appeared in JFP, that is, if it is in the general area of functional programming. JFP will not have these abstracts reviewed. We welcome submissions from both the PhD student and PhD advisor/ supervisor although we encourage them to coordinate.


Please submit the following information to Graham Hutton by 30th April 2015.

o Dissertation title: (including any subtitle)

o Student: (full name)

o Awarding institution: (full name and country)

o Date of PhD award: (month and year; depending on the institution, this may be the date of the viva, corrections being approved, graduation ceremony, or otherwise)

o Advisor/supervisor: (full names)

o Dissertation URL: (please provide a permanently accessible link to the dissertation if you have one, such as to an institutional repository or other public archive; links to personal web pages should be considered a last resort)

o Dissertation abstract: (plain text, maximum 1000 words; you may use \emph{...} for emphasis, but we prefer no other markup or formatting in the abstract, but do get in touch if this causes significant problems)

Please do not submit a copy of the dissertation itself, as this is not required. JFP reserves the right to decline to publish abstracts that are not deemed appropriate.


Graham Hutton School of Computer Science University of Nottingham Nottingham NG8 1BB United Kingdom

submitted by grahamhutton
[link] [3 comments]
Categories: Incoming News

Bird's Functional Pearls in OCaml

Haskell on Reddit - Wed, 04/01/2015 - 2:11am

If anyone is interested in Richard Bird's Pearls of Functional Algorithm Design, there's an interesting site that's implementing the pearls in OCaml instead of Haskell.


Lots of explanations of the algorithms with diagrams.

submitted by derek-mcloughlin
[link] [2 comments]
Categories: Incoming News

Data.EnumMap ?

haskell-cafe - Tue, 03/31/2015 - 6:42pm
Dear Cafe, in containers, we have Data.IntMap/IntSet . Because of the underlying implementation (patricia trees), keys/elements indeed have to be Int (we need their bits). This is a conflict with type-safety: I try to avoid Int, and use some newtype T = T Int instead. E.g., I want to distinguish several different indices for the same structure, like row and column numbers in (sparse) matrices, or vertices in bipartite graphs. So, I made these trivial wrappers EnumMap and EnumSet: Is this reasonable (do from/toEnum really have zero cost)? Would this be a useful addition to containers? - J.W.
Categories: Offsite Discussion

base-compat updated for recent AMP/Foldable/Traversable changes

Haskell on Reddit - Tue, 03/31/2015 - 6:24pm

I updated base-compat to incorporate the AMP/Foldable/Traversable changes from base-

This update allows you to write code that relies on the new Prelude and works seamlessly with all versions of GHC back to 6.12.1, e.g.:

import Prelude () import Prelude.Compat main :: IO () main = mapM_ print (Just 23)

Note that we use

mapM_ :: (Foldable t, Monad m) => (a -> m b) -> t a -> m ()

from Data.Foldable here, which is only exposed from Prelude since base-

(see the README for more information)

submitted by solirc
[link] [2 comments]
Categories: Incoming News

Opt-in upper-bounds notification service?

haskell-cafe - Tue, 03/31/2015 - 6:03pm
Hi, I don’t always have a complete oversight of what our ecosystem provides... do we already have a way to (opt-in) get a mail when a dependency of one of my packages was uploaded in a version that is beyond the upper-bound specified by my packages? Currently I get pinged by Michael Snoyberg when that happens, e.g. in, but that’s always a short while after the problem, and I’d like to fix this before anyone manually notices. If someone would hack up such as service, I’d be happy to use it. Greetings, Joachim
Categories: Offsite Discussion

Template haskell and the dependencies of thegenerated executable

haskell-cafe - Tue, 03/31/2015 - 5:37pm
When I use template haskell to generate some code at compile time and splice it in my program, the generated executable still depends on template haskell (in case of -dynamic), or the Template haskell library is included in my executable (in the case of -static). Isn't that unnecessary? For example. Suppose that I use the almost trivial raw-strings-qq package to implement a hello world program: {-# LANGUAGE QuasiQuotes #-} import Text.RawString.QQ (r) main = putStrLn [r|Bonjour tout le monde|] Then the r quasi quoter runs at compile time and generates a string literal. So basically, the program that gets compiled is the following: main = putStrLn "Bonjour tout le monde" Despite that template haskell is only used at compile time, the generated executable (compiled with the -dynamic flags) depends on the following libraries: libHSraw-strin
Categories: Offsite Discussion

Edward Z. Yang: Protected: Expression-level Backpack

Planet Haskell - Tue, 03/31/2015 - 5:29pm

This content is password protected. To view it please enter your password below:


Categories: Offsite Blogs

Toby Goodwin: Building ghcjs with ghc-7.10.1

Planet Haskell - Tue, 03/31/2015 - 3:04pm
Building ghcjs with ghc-7.10.1

I've been doing some work recently with the wonderful ghcjs. This is an incredibly exciting project, but it's still early days, and actually building the compiler can be tricky, particularly if you want to use the also-new-and-exciting ghc-7.10.1. I've created this recipe that has worked for me several times, and I hope it may be useful to others too.


You will need some version of ghc installed (presumably from your distro), happy, alex, and cabal. You will also need gcc and gcc-c++: if you do not have the C++ compiler you will get confusing error messages that /bin/cpp failed sanity check.

I usually create a brand new user to make a test build, so that my usual development user can keep working, even if the build fails. Then I'll copy the ghc binaries to my usual user, and repeat the build of ghcjs and its deps. (It's awkward to copy built packages, as they have paths wired into them. There is a way around this, but I'd rather burn some more CPU cycles.)


Download the ghc source.

Unpack, and configure with ./configure --prefix /home/ghcjs (or whatever the correct path is). Build with make -j5 (where 5 is one more than the number of CPU cores you have available). Install with make install

Install cabal:

cabal update git clone cabal install ./cabal/Cabal ./cabal/cabal-install

Ensure that ~/.cabal/bin is on path, that cabal install --help includes the --ghcjs option, and that ghc-pkg list Cabal lists Cabal-

Install versions of some libraries patched to build with ghc-7.10.1:

git clone git clone --branch pr-base48 git clone git clone cabal install ./haskell-src-meta ./ansi-wl-pprint ./wl-pprint-text ./stringsearch

The tar package specifies old-time by default, which causes problems, so build it with the correct flag:

cabal install -f-old-time tar

I can't quite remember why the lens build needs to be pulled out, but anyway:

cabal install lens

Install development version of haddock: --allow-newer is needed to cure an outdated upper-bound in haddock-api:

git clone cabal install --allow-newer ./haddock/haddock-api ./haddock/haddock-library

Finally we are ready to install ghcjs itself:

git clone git clone cabal install ./ghcjs ./ghcjs-prim ghcjs-boot --dev --ghcjs-boot-dev-branch ghc-7.10

That's all folks!

$ ghcjs -V The Glorious Glasgow Haskell Compilation System for JavaScript, version 0.1.0 (GHC 7.10.1) Notes

I will endeavour to keep this document up to date as packages evolve. If you do encounter any trouble following these instructions, I'd like to hear about it.

An alternative approach to installing ghcjs is to use the Nix package manager: ryantrinkle has been working hard on a Nix ghcjs package. I've not had the chance to look at this yet, but will do so as soon as time permits.

Categories: Offsite Blogs

ANN: base-compat updated for AMP + request forcollaboration

haskell-cafe - Tue, 03/31/2015 - 2:53pm
Hi, I updated base-compat[1] for the recent AMP/Foldable/Traversable changes and base- A new version 0.6.0 is on Hackage. The purpose of base-compat is to provide a way to write code that works with multiple versions of GHC without the need for CPP. The idea is to have .Compat modules (e.g. Control.Exception.Compat) that provide the same interface across all supported versions of GHC (we test GHC 7.* on travis and I test 6.12.3 manually). The main focus of this release is to make Prelude.Compat as complete as possible to help with the AMP/Foldable/Traversable transition. Prelude.Compat now exposes the exact same interface as Prelude from base- It can be used together with -XNoImplicitPrelude to write code that works with all supported versions of GHC, e.g.: {-# LANGUAGE NoImplicitPrelude #-} import Prelude.Compat main :: IO () main = mapM_ print (Just 23) Prelude.Compat is complete and we have tests that ensure that the interface is the same for all supported versions
Categories: Offsite Discussion

Looking for Haskell contract work

haskell-cafe - Tue, 03/31/2015 - 2:50pm
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Hallo Haskell friends, My company[0] uses Haskell for most of our work. Speaking of work, we are currently looking for some more of it. If anyone has some work (FSVO "work" that includes hacking, advising, teaching, etc.), please contact me off-list. Thanks! [0] plaimi: <>. - -- Alexander alexander< at > -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iF4EAREIAAYFAlUaphUACgkQRtClrXBQc7UySwD/digSIVDgS25tRW4zUtfoO/E3 /vWOMwMRnn9nfFcirrAA/0fFsl8WogNG/J2AP188517xcV4zLV1up7YtUsbEWRnh =JbNc -----END PGP SIGNATURE-----
Categories: Offsite Discussion

SHA256SUMS file for GHC 7.4.2

glasgow-user - Tue, 03/31/2015 - 1:02pm
Hi, For GHC 7.10.1 or GHC 7.8.4 I could find the SHA256SUMS files in and, respectively. The SHA256SUMS file for GHC 7.4.2 isn't in Where can I find this file? Thanks,
Categories: Offsite Discussion

GHC update from 7.8.4 to 7.10.1 breaks 1,500 packages in NixOS

haskell-cafe - Tue, 03/31/2015 - 12:14pm
Hi guys, the Nixpkgs distribution [1] contains all of Hackage -- 7,898 packages at the time of this writing --, and we regularly build these packages with GHC 7.8.4 in our CI environment [2] running NixOS Linux. About 3,000 of these builds are disabled outright, because we know they won't succeed anyway (i.e. they have dependencies we cannot fulfill), but the remaining 5,000 packages compile successfully most of the time. Now, a few days ago, we created a separate build job [2] that compiles the same package set with GHC 7.10.1, and the result is interesting: with the newer compiler, approximately 1,500 packages are broken compared to the state with 7.8.4. A detailed list of broken packages can be found at [4]. Keep in mind that those figures only approximate reality. For instance, we patch packages sometimes to make their builds succeed even though the pristine version would not, and so far much more effort has gone into fixing 7.8.4 builds than we spent on fixing 7.10.1 builds. Also, some packages may c
Categories: Offsite Discussion