Hacker News new | comments | show | ask | jobs | submit login
Haskell Platform 2013.2.0.0 (haskell.org)
139 points by lelf 1604 days ago | hide | past | web | 55 comments | favorite

The Haskell platform is the perfect place to start with Haskell--it comes with the compiler, some useful tools (like cabal, Haskell's package manager) and a core set of well-tested and well-supported libraries. If you have been considering Haskell, this is a great time to go for it!

I'm particularly excited by the updated OpenGL and GLUT bindings. Graphics is currently not Haskell's strong suit, but I think this might soon be changing. There has been plenty of work on high-level things like functional reactive programming (FRP), but this isn't all that useful without the low-level libraries for actually drawing to the screen! These updated packages should hopefully make writing graphics programs in Haskell much nicer.

afaik, carmack is working on a Haskell implementation for wolfenstein 3D. this might have been his excuse to start that project.

there is a really primative FPS shooter up on the haskell wiki, but its really not well structured.


To be fair, it is the world's first 3D FPS written using a functional reactive programming style. 8 years ago. By one guy who was learning Haskell. In 8 weeks.

While writing his undergrad thesis at the same time!

As a Nemesis/Gradius fan I love this; https://github.com/tanakh/monadius/blob/master/readme-e.txt I have been planning to make it cross platform but didn't find the time yet.

One nice feature of the newer cabal-installs is that it can compile dependencies in parallel[1], e.g.:

  cabal install pandoc -j5
Will run five parallel cabal processes.

Also this release contains attoparsec and unordered-containers as new packages \o/.

[1] Obviously, as permitted by the dependency graph. Source files within packages are not compiled (yet) in parallel.

I hope this GSOC module-level parallel build project goes thru


I've been waiting for attoparsec!

In my opinion, Haskell Platform (HP) gets updates too slowly. I understand that the purpose is to have a coherent set of compatible packages, but in my opinion there should be a minor HP release for every ghc update in between. The fixes and improvements in ghc range from usefull to nessecary. It should be possible to release minor hp updates with the automated test suite.

As a HP user, the wait for ghc-7.6 to be incorporated has been too long imho.

If you are an HP user because you want stability, then the wait for ghc-7.6 was just long enough: There was a critical bug fixed in 7.6.3 which was released just in time for this HP release!

We do not release HP for every GHC update for two reasons: 1) Most GHC updates are not in the stability category that HP strives for, 2) Often new GHCs require minor updates to other packages in the HP. The revving of the whole kaboodle more than twice a year is far too much work than the small volunteer group can handle!

What stopped you from installing ghc-7.6 yourself? I've been using 7.4 (from Platform) and 7.6 in parallel for over half a year without problem.

ok! Well I was terrified by the big fat warnings that doing so might break your packages randomly.

GHC uses a per-version package database, so that should never be possible for different GHC versions. For example, I have the 7.4 from platform installed in /usr/bin/ghc (the normal location for Platform installs on OSX) and 7.7 installed in ~/ghc.

Switching between the two versions is as easy as making sure that ~/ghc/bin is on my path before /usr/bin/ghc. All I need to do is "export PATH=~/ghc/bin:$PATH" and things work. Packages get installed in either ~/Library/Haskell/ghc-7.4.1 or ~/Library/Haskell/ghc-7.7 depending on what's in my path when I run "cabal install".

Ah thanks, did not know that! I'm on Windows but switching paths should be possible on Windows as well. :)

Easy workaround—use `hsenv --ghc=ghc-X.X.tar.gz --name head` to build an isolated hsenv that uses whichever version of GHC you like. You then activate it with `source .hsenv_head/bin/activate`.

Don't try ghc-7.7. After -fdefer-type-errors and -XTypeHoles there is no way back.

If I recall, defer-type-errors is in 7.6, too

Yep, thanks. But those nifty type holes…

I haven't used them, but the day there's Agda in my haskell will be a good day.

The Haskell guys really, really need a coherent story for database access. Perl has this with DBI/DBD for example, Java with JDBC, .NET has one (or ten, depending how you count it), etc. Adding that to Platform is the single biggest thing they could do to drive adoption.

See my talk at the Haskell Implementors Workshop this past Fall for a longer list of what we need in the platform.


What's wrong with HDBC?

HDBC isn't in Platform!

Maybe I'm expecting the wrong thing, but as someone not involved in development with Haskell, this landing page gave me nothing to go on.

The link which takes you to the closest thing to an About page is, for some reason, labelled "Problems?".


It does contain this:

"The Haskell Platform is the easiest way to get started with programming Haskell. It comes with all you need to get up and running. Think of it as "Haskell: batteries included". Learn more..."

With a link to this page: http://www.haskell.org/platform/contents.html

Is there something like ipython for Haskell? GHCI is fine but some subtleties are missing. Like typing a prefix and going through a subset of the command history. And also the numpy/scipy/matplotlib toolkit that come with the -pylab option would be great!

There's some promising work that might lead to a nice i python analogue, but I don't anticipate anything being ready for prime time before the fall

It gets a little better when run ghci from emacs in a cabalized project, but I agree it's still no ipython.

Maybe it is possible to write a haskell mode for ipython? I watched Fernando and one of the Julia guys hack up communication between ipython and a Julia interpreter in an afternoon. Depending on how ghci is implemented it might not be much harder.

Ghci comes with editline/readline generally. So Ctrl-r is backward search.

hugs is a different interpreter for haskell, but doesn't have anywhere close to the features of GHCI

Can somebody elaborate what is this?

Edit: Let me rephrase my question: Is this for someone who would like to start learning Haskell?

In short: Yes.

It is the "batteries included" version of Haskell that comes with basically everything you need to write production ready software. There are obviously a lot of useful packages on `cabal`, but they are mostly useful so that you don't have to recreate the wheel (or want to do web-dev).

It's also meant to be used as a reference for distro package maintainers. If your code builds properly with the current platform, you can be confident it will build properly in most systems.

See their wiki on what is Haskell and the advantages of functional programming:


> Is this for someone who would like to start learning Haskell?

This is were said somebody goes to download Haskell after having been persuaded to give it a chance.

I would also recommand EclipseFP. It is an amazingly well working Eclipse Plugin for Haskell with incremental compiling, debugger, Smalltalk like browser, and other nice features.


It is a very good plugin. Moresmau and other contributors deserve a statue.

It even has support for uuagc (dsl for attribute grammars)!

I already have ghc-7.6.3 installed and up to date cabal. What do I get by installing haskell-platform that I don't have right now? AFAIU Haskell Platform is just a vetted list of packages bundled with GHC?

There's also a few other small tweeks, at least over building ghc from source. But the tweeks don't matter unless you're doing relatively unusual stuff (like trying to ffi out avx simd enabled c codes :-) ). (Which will be easier do do with any ghc in a week or so once some tool hacking I'm doing is done)

yes, in this case there is no need to do anything. The Haskell Platform is vetted packages + an easy way to get it all installed (which can be slightly tricky otherwise).

I dunno if it'll get you anything, but it eases things a lot for me running a tech team on Haskell. It's much easier to get people on board with GHC 7.6 for instance now.

Link to Arch Linux package is broken.

Here is out-dated version from AUR though. https://aur.archlinux.org/packages/haskell-platform/

Officially Arch Linux doesn't follow the platform. The Haskell platform tries to pick the most mature and well tested versions. Arch Linux, on the other hand, picks the upstream bleeding edge for all its packages, not only Haskell ones. Right now, the policy seems to pick the latest package versions needed to build the latest version of pandoc and XMonad.

This is not necessarily bad. I like to develop in Arch because it usually comes with future versions that will eventually make it into the platform (I have the GHC version in mind, mostly). However, if you want to distribute your code widely, you'd better be sure it builds properly with the current Haskell platform.

Arch tends to follow the latest ghc and cabal-install, not the Platform.

I've recently discovered livescript (livescript.net), a puckishly named coffee-script-inspired transpiler for node. Its syntax captures some of the best of Haskell, without going down the 'HaskellScript' route followed by e.g. Fay (which I find tends to trade off usability and fitness for purpose against fidelity to the original.) Livescript's answer to underscore is called 'prelude-ls' and is pretty powerful. Highly recommended for Haskell fans stuck in a sandbox.

Fwiw it installs beautifully on Debian-based systems using the Debian Alternatives system:


This lets you install multiple versions, of both Platform and standalone GHC, and swap the active one with a single command. Those scripts are for a prior version, but works the same, just update the versions.

The new documentation format is quite nice!

Would be great to have an actual aggregated changelog.

is this supported on ubunty raring yet?

On a Gentoo system you can install it with:

    layman -a haskell
    emerge haskell-platform

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact