
Haskell for Mac IDE - philonoist
http://haskellformac.com/
======
emilypi
The IDE has great potential, and I've used it extensively for sandboxed and
mini projects, but it's still not mature enough to replace any of the editors
I'm already using (and I think they know that over at HfM).

I'm definitely keeping an eye on it, and once they come up with better pre-
existing project support, and possibly git integration, it will most
definitely be a candidate for replacing atom or Emacs for me. The feel of it
is just fantastic.

~~~
indy
Out of curiosity, did you use the Intero package with Emacs?
([https://commercialhaskell.github.io/intero/](https://commercialhaskell.github.io/intero/)).

~~~
chowells
Also consider Dante
[https://github.com/jyp/dante](https://github.com/jyp/dante) instead of
Intero. Similar (not identical, see the README for a quick overview) feature
set, doesn't require stack.

------
andrewcarter
Funny that this would pop up, I just found it and bought it last week! I've
been playing with Haskell recently and this app is perfect for playing with
example code that you'll read in articles and books while learning.

Another awesome resource is Hoogle
[https://www.haskell.org/hoogle/](https://www.haskell.org/hoogle/) It's super
handy if you already have programming experience and are looking for a
function that does a particular thing but you don't know what it's called. You
can just put the type signature of what you want in the search box and it
gives you back functions that'll do it!

~~~
runeks
> Another awesome resource is Hoogle
> [https://www.haskell.org/hoogle/](https://www.haskell.org/hoogle/) It's
> super handy if you already have programming experience and are looking for a
> function that does a particular thing but you don't know what it's called.

Agreed. There's also Stackage's Hoogle, which will search through a ton of
libraries as well (e.g. _aeson_ , for JSON parsing):
[https://www.stackage.org/lts-7.24/hoogle](https://www.stackage.org/lts-7.24/hoogle)

------
vortico
The code examples in the five screenshots on the homepage are some of the
first real-world use cases I've seen of "real" Haskell. It gives the
impression of Haskell as a practical language other than an idealized clean-
room experiment, so kudos to whoever wrote those!

~~~
signal11
IIRC Haskell for Mac was created by @tacticalgrace who's an Australian CS
professor:
[http://www.cse.unsw.edu.au/~chak/](http://www.cse.unsw.edu.au/~chak/)

No idea if he created the demos though.

------
AJRF
This looks awesome. On Friday I started going through "learn you a Haskell"
and absolutely love the languages expressiveness and syntax.

One thing that ticked me off a bit was that the package manager and build
system (cabal and stack) were a bit incomprehensible to me, hopefully this
packages everything up nicely.

Indentation is a bit confusing in Haskell too, but this IDE has built in
support for linting indentation.

~~~
adamnemecek
Yeah I always get stuck on cabal and stack.

~~~
3131s
I tried out Yesod and Snap a while back and while the frameworks themselves
were pleasant to work with from what I could tell, I spent whole days messing
with package management issues that would render my projects unrunnable after
new installs. I couldn't see myself working with Haskell in production for a
web project until that situation improves.

~~~
fasquoika
Aren't some Haskell developers also using Nix for dependency management?

~~~
tikhonj
I use Nix and it's awesome, but still in early adopter territory. It works
wonderfully if you really value reproducible builds and are willing to put
some effort in the initial setup, but it's still a bit fiddly and
documentation is nearly non-existent. If you have the time and motivation to
learn about it up-front and get it set up it pays off, but I wouldn't
recommend it to beginners just trying to learn Haskell.

------
agentultra
I really like that it has SpriteKit integration but there are more practical,
work-a-day framework bindings that would have sold me. The ideal world a
Haskell IDE _for Mac_ inspires is one in which I can build native macOS
applications in Haskell. I hope it's on the radar.

------
saagarjha
> Haskell for Mac integrates Apple’s SpriteKit game engine including
> animations & physics.

Interesting. How is this done? Is there a Haskell-style interface provided, or
is it a thin veneer over the Objective-C API?

~~~
jfoutz
[http://support.hfm.io/1.5/api/spritekit-0.9.0.2/Graphics-
Spr...](http://support.hfm.io/1.5/api/spritekit-0.9.0.2/Graphics-
SpriteKit.html)

------
runeks
I use IntelliJ IDEA with the intellij-haskell plugin, which works to some
extent, but is fairly slow -- not the least at startup, which can easily take
five minutes.

I'm afraid I won't be trying out this IDE, however, unless they offer a trial
period (which I can't spot anywhere on the page). $30 isn't too much for a
good IDE, but I'd like to try it out before paying in full, particularly since
it seems to reinvent the IDE from the ground up, which makes me suspect a lot
of the extra functionality, that more mature IDEs have, is missing.

~~~
pthreads
At the very bottom they have a link for the trial version
([http://store.haskellformac.com/](http://store.haskellformac.com/))

------
Szel
Anybody knows some nice IDE on Windows? Or is programming on Windows even
worthwhile?

~~~
icc97
I got Haskell + Emacs + Intero working on Windows [0]

[0]: [https://ianchanning.wordpress.com/2016/08/11/installing-
hask...](https://ianchanning.wordpress.com/2016/08/11/installing-haskell-
emacs-on-windows/)

------
amatecha
I finally updated to OS X Yosemite (10.10) and went to buy this app as I had
been intending to once I updated, but unfortunately since I made those plans,
Haskell for Mac now requires an even newer version of OS X :( Unfortunate...
I'll have to stick with IntelliJ IDEA for now -- no plans to ever "upgrade"
beyond Yosemite unless absolutely necessary.

~~~
eicossa
Why don't you want to upgrade beyond Yosemite ? I just bought a new Macbook
Air and its been nagging me to update.

------
nerdponx
This is just what I needed. I love Vim and Emacs for daily work, but a good
IDE is a fantastic learning tool. Looking forward to trying it!

------
mark_l_watson
I bought this last year. Nice product. I usually use Emaces but the IDE works
nicely for small bits of code and live programming.

------
Learn2win
HfM is great to play with and learn Haskell. For a real project, I use Haskell
Vim IDE.

------
comment105
> Learn Functional Programming with Haskell

Why would I pay $30? I can learn and use Haskell for $0.

This feels like a typical mac os thing, pay for everything.

~~~
aetherspawn
You pay for good software, and a lot of Mac OS software is not just good, but
great.

I didn’t bat an eyelid when I bought Little Snitch, Alfred, Parallels, et al.
and from the screenshots this looks like a nicely polished piece of software.

~~~
comment105
> You pay for good software

Hmmm, I don't like that statement.

"Great software" is very subjective. I think linux is a great piece of
software. I use a macbook for the great hardware but certainly not for the
software! Apart from Sublime text all apps I use are free, including hundreds
of CLI apps.

~~~
jernfrost
Sounds more like a religious belief than something which could be argued on
merit. I use both Linux and macOS on a daily basis and there is just no
question about which OS has the highest quality software eco system.

I like Unix, which is why I use Linux and macOS. Linux because macOS is not an
option and work, and I dislike non Unix systems like Windows. I like to have
access to a powerful CLI.

But lets face it. Once you step outside the CLI on Linux, it compares very
poorly to macOS. Not only do you have far more choices for every type of app
but most of those choices tend to be higher quality as well.

Now let me qualify what I mean by quality. Many Linux apps does in fact have a
significant amount of functionality. You got quite extensive packages such as
Gimp and Inkwell. However these frequently have poorly designed UIs or UIs
which are completely different from other applications, and frequently
integrate poorly with the rest of the OS.

You mentioned Sublime. Well guess what that came directly as a reaction to
TextMate on macOS. There are dozens of these types of modern incarnations of
vim and emacs on Mac. Fortunately now we have started getting some selection
on Linux with sublime and atom. But it was kind of slow, and while both have
quite good core functionality, they are a bit lacking in UI. You notice how a
lot of successful apps on Linux have to rely on HTML based interfaces. Which
means you kind of notice the UI is kind of slim. Last time I checked neither
Sublime and Atom had any real UI for creating and modifying bundles/plugins.

------
mlevental
i know this is a haskell thread but after trying to grok haskell for years
(yes i understand monads) i've discovered F# and jesus christ what a dramatic
difference in functional language ergonomics and tooling and ecosystem. it has
everything that haskell does (ADTs, type inference, immutability [when you
want it], lazy [or eager] eval, pattern matching/destructuring, expression
based, and partial application/curried functions) but it doesn't handcuff you
to pure (side-effect free) code. say what you want but often writing code in
haskell is monad acrobatics because you can't write a simple for loop or do
i/o. the tooling is fantastic and cross platform (visual studio/xamarin) with
a real debugger, real breakpoints, lightyears better docs, readable compiler
errors, enormous ecosystem by way of interop with c# libraries. it's an
eminently practical functional language. the `F# for fun and profit` series of
blogposts is fantastic for not only introducing the language but explaining
the value proposition of functional patterns. of course i wish ocaml had the
same advantages (and it does have many) since it compiles to native binary but
i'll accept the CLI in exchange for all the tooling benefits.

~~~
bad_user
On Hacker News I've noticed people read titles, then go to the comments
section to dump whatever thought is on their minds, triggered by certain
keywords like some game I used to play as a child, as an excuse to get
something off their chest.

It's very rude to pimp on other people's projects and articles to get
something off your chest though.

This article is not primarily about Haskell, but about a commercial IDE made
by a guy named Manuel M T Chakravarty — which for me it's interesting, because
it's an example of somebody that apparently makes something that he likes,
helping an ecosystem and people give him money for it. So it's perfectly on
topic for Hacker News and visitors of the comments section like myself, would
like to see opinions related to this project.

As for the comment, F# is a fine language, but reading the comparison I'm
fairly certain that you haven't learned Haskell and I say this in order to
help you — learning Haskell is the easiest path to practicing FP, which given
your comment I'm fairly certain you don't grok yet, which keeps you back from
being a good F# developer as well.

That you haven't learned Haskell is more of a failure of Haskell's community —
but there have been recent projects trying to address that. One is the Haskell
for Mac project here in TFA, others are the Stack build tool and
[http://haskellbook.com](http://haskellbook.com), a really good book meant for
beginners.

~~~
mlevental
>It's very rude to pimp on other people's projects and articles to get
something off your chest though.

this isn't a refereed journal - you can't prescribe how people engage with the
material. i was prompted to post what i did on the back of having experimented
with every ide-ish thing for haskell out there about 6 months ago (this one
included).

>As for the comment, F# is a fine language, but reading the comparison I'm
fairly certain that you haven't learned Haskell and I say this in order to
help you

not only is this patronizing but it commits the fallacy of begging the
question - i did learn haskell while working on a fairly sizable codebase at
my last job. i won't reiterate all of my complaints here (i've posted several
times to r/haskell) but the tooling sucks and pure code is a set of handcuffs
- golden handcuffs maybe but handcuffs nonetheless. that we disagree on
whether pure code is the one true god does not mean i don't understand fp - it
means just that, that i disagree! to conclude from my disagreement with you
that i don't understand fp begs the question (petitio principii) of whether
pure code is the one true god.

>That you haven't learned Haskell is more of a failure of Haskell's community
— but there have been recent projects trying to address that. One is the
Haskell for Mac project here in TFA, others are the Stack build tool and
[http://haskellbook.com](http://haskellbook.com), a really good book meant for
beginners.

i read the haskell book and learnyouahaskell and real world haskell and many
many tutorials and wrestled with stack and cabal. certainly they're better
than the tools/resources available for e.g. cobol but they do not compare to
the ecosystem around other, much more welcoming languages.

~~~
axlprose
I think part of the issue that the parent comment was trying to get at here,
is that haskell does things the way it does for a reason, and that the type
system is much more of an aid to thinking about the problem you're solving
than some restrictive handcuff, once you understand what it's doing and why
it's doing it. I say this as someone who worked in F# for years, and
eventually _switched to_ haskell because it had better support for these
concepts via it's built-in typeclasses.

As for what you say about haskell being "monad acrobatics", it can be equally
true of F#, or any other typed functional language, because all
monads/applicatives/functors/etc are, are just helpful functional design
patterns. It would be like calling Factories in Java handcuffs. If you don't
want to code using Factories or Monads in Java/Haskell, that's still your
choice, but if a lot of libraries in that language are using that pattern,
it's probably for a reason that makes it useful in that language's paradigm.
Haskell just makes it easier to use these patterns than F#/OCaml/Elm/etc
because of its typeclasses, so a lot more people use them. That's all there is
to it. I'll grant you that F#'s tooling is a little bit better in places
though, but I was never a huge fan of it's project/module system. OCaml
probably has both F# and Haskell beat there.

That being said, F# is still a fine language, and I think it's probably a
better stepping stone towards learning haskell (and typed functional
programming in general) than haskell itself, just because it gives you the
option of gradually easing your way into the ML style of programming if you've
already had some imperative programming experience before. And that's key,
because the issue here is one of shifting the way you think about your
programming problems, and there's simply no quick/easy way to do that. In
fact, I find that a lot a complete newcomers to programming have an easier
time learning how to do things the haskell way, because they don't really have
these issues of feeling restricted by the type system, since it's the only way
they've been taught to do things.

So overall I would say just keep at it with F#, and check out the F# way of
doing things like monads (or "computation expressions" [0] as they're called
in F#) , monoids [1], "Railway Oriented Programming" [2], and other such
patterns [3], then maybe try checking out Haskell again later and see if it
seems a little easier. But there's really no reason to be bashing it
regardless.

[0] [https://fsharpforfunandprofit.com/series/computation-
express...](https://fsharpforfunandprofit.com/series/computation-
expressions.html)

[1] [https://fsharpforfunandprofit.com/posts/monoids-without-
tear...](https://fsharpforfunandprofit.com/posts/monoids-without-tears/)

[2]
[https://fsharpforfunandprofit.com/rop/](https://fsharpforfunandprofit.com/rop/)

[3] [https://fsharpforfunandprofit.com/series/map-and-bind-and-
ap...](https://fsharpforfunandprofit.com/series/map-and-bind-and-apply-oh-
my.html)

