powered by community, democracy, and you.

You could pick a part of your project that don't require a GUI and that could be accessed by the rest of your project by a networked API. Then you could implement it both in Haskell and Java and compare the two.

For the GUI, you might consider using a web interface: there are plenty of web-related libraries and framework to choose from in Haskell.

Oh really cool, Leuven is closer to me than the Ghent FPG (and actually my next job, starting in 3 weeks, will be in Leuven and I hope to bring Haskell there) ! Thanks for posting this here, I didn't know about it.

Edit: I like this answer (and mine was in a similar vein) because it highlights two points that I feel are very important: production Haskell, and that the people who proposed FTP as it is found in a release candidate today have put a lot of thought and work in it.

The first point is about what we should value: is it about learning Haskell at home or university and then leaving it on the side (I saw that with numerous student at my own university: what they learned was not production Haskell, it was, to them, some kind of nice or boring academic/useless stuff) or learning what matters in the long run, when you have put code to production and must evolve and maintain it ?

The second point is important to me because it feels like a lack of respect. We're here debatting and repeating and offering new proposals while significant work has already been done. Included in that work is weighting the pros and cons of the proposal, detailing the proposal itself, giving a migration path, implementing the proposal, ...

The repository contains a Dockerfile, so simply cd to your cloned repository, then docker build -t ghcjs .. It takes quite some time but then you end up with a ghcjs image. Run the image with docker run -t -i ghcjs bash and you can try the Hello World example.

Doesn't it mean that cabal tried to install the dependency but failed (upper in the logs), then it continues and indeed fail to install the requested package ? This wouldn't be a failure of cabal or hackage, just that someone uploaded a broken package (the dependency, not the requested package). I see that behavior from time to time.

That seems really great, thanks! I have been using more and more Docker images as battery-included compilers (e.g. GHC 7.8.3 + Haste, or GHC 7.4.1 + a set of packages for a long-lived project, or JDK + Maven, or JDK + Android SDK, ...) and your image seems a great opportunity.

Still I have no idea what would be the next step in using your image. Is it to write a regular Android application that calls into the (compiled) Haskell code ? Or is enough of the Android SDK exposed to Haskell to write everything in Haskell ? Is there an example somewhere ?

Edit: Looking at android-haskell-activity, it seems that you have to write a minimal wrapper Android application that calls into your Haskell code (using JNI). Then you can do everything you want in Haskell, including using everything that is available to a regular Android application (using again JNI). Is that still the recommended approach these days ?

Yes, you can. There is some special support for the list and tuple syntax built into the language, but otherwise you can view : (for lists) or ( , ) (for tuples) as regular constructors (i.e. pattern matching works).

If you use characters valid for operators, you can even have your own constructor that begins with : that can be used in infix form. E.g.

While working on my own projects, I tried to use the same set of dependencies (not necessarily all of them) for each project. The goal is to make sure that I can move around part of those projects (e.g. extract some code, make a package out of it and use it in two projects).

The approach I took was similar in spirit to Stackage: I maintain a Docker image with GHC + all my dependencies. When I compile a project, I use that image and disallow access to Hackage. That way I can see when I have introduced a new dependency that I don't exlicitely installed in the Docker image.

With the time moving forward, I started to pin more and more dependencies (and live more and more in the past). By this, I don't mean choose a specific version on my projects cabal file. I mean choosing a specific version for packages installed in the Docker image, often indirect dependencies of my project cabal files.

This means that while I took an approach close to the idea of Stackage, the reason that make me change my dependency versions is too loosy upper bounds.

I like the idea of a set of packages that can be used as foundation for related projects. I like the idea of Stackage. But I believe that this idea can be done only on top of a PVP compliant Hackage. In the case of Stackage, people have decided to fix their package very quickly, in order to offer the next snapshot. But if you want to create your own set from Hackage, without a known starting point (w.r.t. to versions), and without people necessarily keeping track of your set, the PVP helps a lot.

I think your decision is a bit hastily made. Look at the numbers. This thread has currently 76 points and 33 comments. The other thread you mention 40 points and 181 comments. ghci-ng has 47 points (i.e. it's similar) but only 14 comments. Now, which one represent the Haskell community the most ?

That being said, the word community doesn't mean much. When people say "I thought the Haskell community had a friendly reputation", it doesn't mean it will never grow and attract vocal people. If someone has never posted or commented on a technical level in this subreddit, there's no reason to say that person represents the Haskell community when being a dick on a non-technical thread.