I'm mainly a .NET developer so I normaly use Windows/VisualStudio (that means: I'm spoiled) but I'm enjoying Haskell and other (mostly functional) languagues in my spare time.

Now for Haskell the windows-support is ok (you can get the Haskell-Platform) but latley I tried to get a basic Clojure/Scheme environment set up and it's just a pain on windows.

So I'm thinking about trying out another OS for better tooling and languague support. Of course that leaves me with MacOS or some Linux distribution.

I never used MacOS before and of course Linux would be cheaper (free) and I don't think I can parallel-boot MacOS on your normal PC-Hardware (can you?). PLUS: I don't have a clue about the tools you can use on those (to me) forign OSs.

To make it short: I want to explore more Haskell, Clojure, Scala, Scheme and of course need at least good tooling for JavaScript/HTML5/Css. Support for .NET/Mono/F# would be great but for this I will still have my Win7 boot.

So I like to know: - what is your prefered OS, Distribution (is Ubuntu viable?) - what Editor/IDE are you using

Thank you for your help!

PS: I'm not sure if this is the right place for this question but I surely hope so - if not please let me know where I should move this to (StackOverflow don't seem to be the right place IMHO)

  • Everything is a hell lot of a pain in Windows unless you install Cygwin. Once you've got Cygwin, there won't be any incentives to move anywhere from Windows. – SK-logic Sep 20 '12 at 9:22
  • 8
    @Sk-logic: Cygwin makes using Windows a bit less painful, but eventually one might want to have the real thing and move to some Unix-like OS. ;-) – Giorgio Sep 20 '12 at 9:30
  • possible duplicate of Is Ubuntu workable as a laptop for an IT consultant? – vartec Sep 20 '12 at 10:09
  • 2
    @vartec: I do not think this is a duplicate: this question asks specifically about using functional programming languages. – Giorgio Sep 20 '12 at 10:14
  • 3
    Start with a good linux like Fedora, Mint, or Ubuntu before blowing your load on a Mac. – Rig Sep 21 '12 at 15:20

The route I'm currently taking for experimenting with such languages and other things, with great success and ease of use:

  • install Debian under a VirtualBox VM, running on Windows host
  • keep all my code on the host or on a shared network drive, edit on the host using favourite editor (still undecided between Notepad++ and SublimeText; for C++ I just use VS)
  • share the directory on the host, mount it in VM
  • compile/run the code in the VM (or you could even ssh to it using cygwin)

This way you get the pros of both operating systems.

| improve this answer | |
  • hmm... interesting - but I think I do the deep-dive and install Ubunto parallel on my toying-laptop (won't endanger my work-machine - yet) – Carsten Sep 20 '12 at 9:46
  • 1
    On my personal laptop I've been using dual boot Windows - Linux for ages and never had a problem with it. On the other hand, on my desktop I haven't installed Windows for the last 10 years. Unless I need some specific software that's only available for Windows (e.g. video games or the cell-phone interface software) I really do not miss Windows. Bottom line: You can do all the (functional) programming you need on Linux once you have become familiar with the proper tools. – Giorgio Sep 20 '12 at 16:18
  • I indeed tried this on my desktop today - Ubuntu in a VirtualBox VM - gave it 30GB on my SSD and 4GB Ram together with two Cores - runs smoth with the few things I tried (and the VM is really great with seemless windows resizing and all that) - for now this will be the way I try ubuntu for now - maybe I install a dual-boot on my laptop later but with dual-monitor this is great - Thank you, flaged this as answer – Carsten Sep 24 '12 at 16:57

Short Answer: There is a simple solution to your problem. Just install the virtual-machine with Linux (Ubuntu) - it is free.

I am also a mainly .NET developer who loves to experiment different things, or try variety of frameworks and/or development tools. The main thing here is not to mess your main development environment. Thus, installing everything in a Virtual machine (the native OS, frameworks, configuring and setting them up, etc.) for the type of development you intended to do is the most logical and optimal way to go.

Edit: You may consider different virtualization solution to build your Virtual Machine. My personal preference go with VirtualBox. It is a free x86 virtualization solution allowing a wide range of x86 operating systems such as Windows, DOS, BSD or Linux to run on a Linux system.

| improve this answer | |
  • 2
    the ability to make a snapshot of your development environment that you can revert to later is a major advantage of this approach. you can also share the development env with interested colleagues – Arthur Ulfeldt Sep 20 '12 at 15:26
  • what VM do you suggest? – Carsten Sep 21 '12 at 17:47
  • 1
    Previously i was using VMware, now i prefer VirtualBox - less hassle to deal with. – Yusubov Sep 21 '12 at 18:11

I use Haskell and Scala (and also doing some Scheme, Common Lisp, SML, OCaml, Erlang) all under Linux (Ubuntu).

All of the above languages (compilers and interpreters) can be installed quite easily (there are packages that can be installed using apt-get or another package management system).

Scala has a good integration with Eclipse and the Scala plugin(s) are actively developed. If you want to learn more, there is a course on Scala currently running at Coursera which explains how to use Scala on Windows, Linux, and Mac. Maybe you do not have all the features and integration of Visual Studio, but I have developed quite large projects in Eclipse and it works just fine.

For editing Haskell (and the other languages listed above) I use gvim which is OK for small projects. You can use another editor (e.g. EMACS), provided it has syntax highlighting for Haskell. Otherwise, you can take a look at haskellwiki (thanks to Zach L for the suggestion).

For managing the source code (versioning) I use SVN through Eclipse for all these languages.

| improve this answer | |
  • thank you - I did not do any large scale haskell project (yet) and up to now Notepadd++(sic!) did the job for me - maybe I should look into VIM/EMACS but this might end up beeing more difficult to learn then the hole other OS thing... yeah I'm spoiled by IDEs (already mentioned this - didn't I?) – Carsten Sep 20 '12 at 9:44
  • There's a few Haskell IDEs listed on HaskellWiki. – Zach L Sep 20 '12 at 9:55
  • 2
    For editing Scala code you can use Eclipse. There is also a Scala worksheet Eclipse plugin that allows you to edit and test pieces of code on the fly. VIM (and EMACS) take some getting used to but they are very powerful. I would not learn either of them only to edit Haskell files. I have learned VIM as a general-purpose editor. – Giorgio Sep 20 '12 at 9:56
  • @Zach L: Thanks for the link. I can add it to the answer if you give me permission to. I have tried out Leksah a few months ago but as far as I can remember it was not usable yet. So far I haven't tried out any other Haskell tools. – Giorgio Sep 20 '12 at 10:00
  • @Giorgio Sure you can add it! – Zach L Sep 20 '12 at 10:04

MacOS requires Mac hardware or you might get it to run on VirtualBox, but last time I tried that it didn't work. And since you don't want to replace your current configuration/setup problems with other problems, I suggest you either spend a lot of money or try linux. I've used Ubuntu for Haskell, Scala and Lisp development with Eclipse, Netbeans, IntelliJ and Emacs, and I haven't had much trouble setting those up.

| improve this answer | |
  • thank you - Ubuntu looks very promising due to it's (seemingly) easy install on top of windows ... it's a long time I really used linux - I think I will give it a try - IntelliJ is a comercial product right? – Carsten Sep 20 '12 at 8:24
  • @CarstenKönig Yes, it's a commercial product, however I believe you can get free licenses if you intend to use it in a classroom, or use it to maintain an open source project (and can prove it). – Daniel B Sep 20 '12 at 9:13
  • 1
    @CarstenKönig IntelliJ has a (free) community edition. – yannis Sep 20 '12 at 10:16
  • the scala plugin for IntelliJ is also free, but I would still recommend Eclipse. – Kim Sep 20 '12 at 10:48
  • Coming from Visual Studio, IntelliJ will be a much more familiar environment to work in. It feels like a cut down version of VS; while Eclipse and VS's interfaces/workflow are extremely different. – Dan Is Fiddling By Firelight Sep 20 '12 at 12:36

All of the Unix-like OSes have very good command line tooling. I've personally had good experiences with Ubuntu for both development and deployment, many of my friends also swear by MacOS. I've not seen an obvious reason to prefer one or the other, they are all IMO better than Windows for command line work.

On the Clojure/Scala side specifically, you may find Windows is actually pretty good if you use one of the Java IDEs with the appropriate Clojure/Java plugin. I personally use Eclipse with Counterclockwise as my main Clojure development environment in Windows 7. There's also Scala IDE to check out. This is a good approach if you like full-featured IDEs and/or want to do polyglot programming in the same environment. An extra plus of using something like Eclipse is that the git/svn/maven integration is very good.

| improve this answer | |

While I am a big mac and linux fan there is no reason you can't do any of those languages on windows. Also if you want a functional language on windows don't overlook F# which is a .net language

| improve this answer | |
  • 4
    F# is one of my main languages (the other beeing C#) :D – Carsten Sep 20 '12 at 8:53
  • I have not learned it yet, but it looks like a pretty nice language. I spend most of my time in Erlang these days – Zachary K Sep 20 '12 at 11:30
  • 2
    F# is IMHO the best language in the .net eco-system, only lacking some tool love (no refactorings, almost-nonexisting solution-support (for example no subfolders out of the box)) - you can think of it as some haskell/Ocaml/C# hyprid – Carsten Sep 20 '12 at 12:49
  • That is what I have heard. I got the impression that F# is Microsoft's way of taking cool ideas from Haskell and moving them into the .net world – Zachary K Sep 20 '12 at 14:00
  • @Carsten König: I do not know F# but as far as I know it is mostly derived from Ocaml. – Giorgio Sep 25 '12 at 21:12

I've used Haskell on Windows, OS X, and (Ubuntu) Linux, so I can offer a few remarks about that. Now, anything you can get from the Haskell Platform is probably going to work just fine no matter what, but after that:

  • Relatively few Haskell programmers use Windows. You will find things on Hackage that assume a unix-like environment without really stating that explicitly.

  • Lots of useful stuff comes from FFI bindings to C libraries, and the lack of an even vaguely consistent and reliable C compilation toolchain on Windows means that, in my experience, installing FFI bindings from hackage is a crapshoot at best.

  • Anything necessarily platform-specific, which amusingly enough includes cross-platform GUI libraries, is more likely to "just work" on Linux.

  • Cygwin doesn't help as much as you think.

In summary: Everything tends to work on Linux, most things work on OS X but a few things are weird, and on Windows you should expect to encounter lots of interesting headaches when using libraries.

If you just want to have fun experimenting with stuff and learning Haskell, do yourself a favor and use an Ubuntu VM or something.

As far as editors and such go--emacs and vim are popular as always. I never learned to use either (though I really should...) and don't care for most IDEs, so I generally stick with SciTE--it's a thin wrapper around an editor widget called Scintilla, which you might know as being what Notepad++ uses.

| improve this answer | |

Rather than picking an OS, let me come at this from the IDE angle. If you're interested in Scheme, I would encourage you to try out DrRacket, which emerged from the Scheme jungle a few years back. The IDE runs well on Windows, OS X, and Linux.

Now, you just have to pick the right OS to run all of your other functional languages.

| improve this answer | |
  • thank you - I only found out about Racket yesterday - had not much time to look into it but the IDE/Lang. looks interesting to me - though I cannot say if it's really viable for "real" app development yet. – Carsten Sep 21 '12 at 4:15

Simon Peyton-Jones, one of the creators of Haskell is a Windows user and from what I gather, Haskell has excellent windows support.

Your question is a little vague to be honest, your choice of OS is not tied to the paradigm of the language you are using.

Personally I believe that outside of the C# and Java world (where development environment is dictated by your IDE), a development environment should always be a flavour of Unix, whether it be BSD, Linux or OSX.

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.