News for hackers. Stuff that matters.
Re:Choosing a Web Framework/Language Combo for the Next Decade by tikhonj on Wednesday May 21, 2014 @05:28AM (#7777312)
I (naturally) think that the article's summarily dismissing Haskell is unfortunate. It's probably just the result of poor PR on Haskell's part.

Haskell is not only for surpassingly intelligent people, or even optimized for them. If anything, it's the opposite: one of its core tenants is that we're not smart enough to reason about our programs in most languages. Much of the design work focuses on unloading complexity into the language, tools and abstractions.

Haskell goes out of its way to prevent common errors and help you design your program. In a very real sense, it trims the "search space" of possible programs, helping you zero in on a reasonable solution. To an extent, I use Haskell because I'm not smart enough to use C.

Haskell is unfamiliar. And people mistake that for some sort of innate difficulty. But the two are not the same.

I would argue that overcoming unfamiliarity is one of the most important ways to grow as both a programmer and, more generally, a person. That's why I think the article focuses too much on choosing a language that's familiar, codifying it as "just about all the good advice". This mindset is far, far too exaggerated in most programmers, and its what really slows down progress, especially for popular programming languages.

The blub paradox is also a bit misrepresented. Being a "blub" programmer is not a matter of being more or less intelligent—it's a matter of not knowing what you're missing. "Beating the Averages" is not "we used Lisp because we were smarter than you"; it's more like "we used Lisp because it offers some incredibly powerful tools that non-Lisp programmers have never used and so do not really appreciate". It's a matter of habits and experience, not intelligence.

My advice? Do try something unfamiliar. Especially if it seems to be higher in the great partial order of programming language power :).

Re:Choosing a Web Framework/Language Combo for the Next Decade by pron on Wednesday May 21, 2014 @05:55AM (#7777372)
I think Haskell underestimates people's intelligence when it comes to things like mind-simulating state change in simple subroutines, and overestimates it when it comes to understanding lazy evaluation and monads. Humans had built useful structures long before they've been capable of rigorous abstract thought. How? By trial and error. Most people find it easier to learn how to catch a ball by practicing rather than by calculating its trajectory. I'm not saying that is always the right approach, but it does come more naturally to the human brain.

Haskell discounts the very useful choice of reasoning about your code after it runs, favoring, instead, all-upfront reasoning, often at the expense of facilitating the former. There are some domains where figuring everything up front is very important. Others, where trial and error is far more productive.

Trying unfamiliar things is very good advice, but not for an important project you want done relatively quickly, and which you'd have to maintain for years to come.

Re:Choosing a Web Framework/Language Combo for the Next Decade by jcromartie on Wednesday May 21, 2014 @09:42AM (#7778127)
> Haskell discounts the very useful choice of reasoning about your code after it runs

Huh, I have never thought about it like that. Thanks.

Re:Choosing a Web Framework/Language Combo for the Next Decade by knappador on Wednesday May 21, 2014 @06:16AM (#7777448)
Pass in requests. Get responses back. Same input, same output, except for potentially dirtied DB hits. This is somewhat of a good fit for a functional language program that just handles request after request. For API's Haskell might be a great fit.

For server-side rendering of fat web clients, I don't see any way around node.js and my resentment of javascript without doing some impressive design of the client to be able to reinitialize itself from a JSON that pops out of the client state in the host language. It's possible, but I'm too busy with Kivy to mess with web development atm.

Re:Choosing a Web Framework/Language Combo for the Next Decade by knappador on Wednesday May 21, 2014 @06:19AM (#7777454)
Whoops. MySQL. Nevermind. Everything is happy, everyone. I'll be going on my way now. Nice chat.
Re:Choosing a Web Framework/Language Combo for the Next Decade by cageface on Wednesday May 21, 2014 @05:42AM (#7777346)
Many of the brightest programmers I've ever met have struggled to get their heads around Haskell. Enough of them that I don't think it's really a PR issue or a lack of good introductory materials. I'm wiling to take the claims on faith that Haskell's design eliminates a lot of common programming errors but I've been listening to predictions of Haskell's emergence into the mainstream for almost 15 years now and, from where I sit, I have to say it's never going to happen.

I used to be a bench chemist in a pharmaceutical company and the tools we used to develop new drug candidates and the tools we used to put them into mass production were radically different. I don't see why software should be any different. Let Haskell be the proving ground for new ideas and we can cherry pick the best ones for simpler languages later.

Re:Choosing a Web Framework/Language Combo for the Next Decade by vishnugupta on Wednesday May 21, 2014 @06:16AM (#7777447)
> I used to be a bench chemist in a pharmaceutical company and the tools we used to develop new drug candidates and the tools we used to put them into mass production were radically different. I don't see why software should be any different. Let Haskell be the proving ground for new ideas and we can cherry pick the best ones for simpler languages later.

This is a very interesting observation. I would hazard a guess that Phil Wadler developed (or at least significantly contributed to proving type-theoretic soundness of) Java Generics and Collections after they sort of proved their worth in Haskell world.

Same with Lambda which made its way to Java 8. STM is perhaps next.

Re:Choosing a Web Framework/Language Combo for the Next Decade by jacquesm on Wednesday May 21, 2014 @06:24AM (#7777468)
I don't think the credit for the java implementation of 'Lambda' should go to Haskell pioneering it and proving it useful. First class functions were present in lots of other languages, most notably the lisp family long before.
Re:Choosing a Web Framework/Language Combo for the Next Decade by seanmcdirmid on Wednesday May 21, 2014 @07:50AM (#7777704)
Generics also were not a new idea back then...and let's not forget Gilad and Martin, whose backgrounds weren't haskell.
Re:Choosing a Web Framework/Language Combo for the Next Decade by dev360 on Wednesday May 21, 2014 @10:31AM (#7778423)
Does anybody know when C++ got templates?
Re:Choosing a Web Framework/Language Combo for the Next Decade by dllthomas on Wednesday May 21, 2014 @02:28PM (#7779883)
Certainly before 1994, given that Stepanov was already writing about his Standard Template Library for C++.
Re:Choosing a Web Framework/Language Combo for the Next Decade by mtrimpe on Wednesday May 21, 2014 @07:23AM (#7777613)
I'm all for trying something unfamiliar, and I could even argue for Haskell that way, but from a different angle.

I would say that adopting a language for the next 10 years that doesn't have purely functional data structures at its core is a fool's errand.

Persistent data structures, i.e. efficiently storing every version of your data structure, is the natural reflection of the new reality in computing where:

  * storage is cheap
  * random reads are cheap
  * random writes are expensive
  * serial writes are cheap
Whether you adopt this through Haskell, Clojure, scala or even Bloom e.a. is fairly inconsequential.

What will matter is that persistent data structures will inevitable become commonplace over the next decade and that techniques for leveraging it (such as functional reactive programming) will be adopted in one form or another.

@jacquesm: I live in Amsterdam so I can try to explain it to you in person once; virtually everyone still underestimates the impact this will have and (or perhaps because) it's very difficult to get that across in writing.

Re:Choosing a Web Framework/Language Combo for the Next Decade by jacquesm on Wednesday May 21, 2014 @07:40AM (#7777670)
Living in Romania right now, but I'll ping you when I'm back in NL (I go there at least once every few weeks), Clojure seems to be the most approachable from the languages you list.

Besides your listed reasons mutable state is becoming a bigger and bigger bottle neck as the number of cores goes up and that's why functional programming is becoming more and more important. It also makes programs much harder to write in a bug-free manner and it makes testing much more difficult (if not impossible).

It's one of the core reasons why I felt so bad about dropping Erlang from the list because I feel that it gives me that plus a battle tested environment to work with.

Still tempted to put it back in. Your reasons add weight to an already very difficult decision, whether or not to pursue this opportunity as a way to get more into functional programming or to stay in my 'comfort zone'.

I've been toying around with FP on and off for the last couple of years and it is one of the most important revivals the computing world has seen to date (imo of course).

Re:Choosing a Web Framework/Language Combo for the Next Decade by lmm on Wednesday May 21, 2014 @07:59AM (#7777732)
This may be my biases speaking but I'd say Scala is a more approachable option than Clojure (and more popular, and has a first-class web framework in Play). It keeps more of the traditional OO style and syntax - you can use scalaz and write scala that looks like Haskell, but you can also write code that corresponds line-by-line to java, whereas with Clojure you're forced to make a more immediate leap to the lisp-style syntax, immediately stop using inheritance, and so on.
Re:Choosing a Web Framework/Language Combo for the Next Decade by ctdavies on Wednesday May 21, 2014 @03:30PM (#7780236)
That's a major appeal of Clojure, the Lisp (not Lisp-style) syntax, the functional paradigm (and the idioms are great). I really don't want to write code that corresponds line-by-line to Java. If I wanted to do that, I'd just write Java. However, Java interop with Clojure is straightforward. Furthermore, Clojure allows one to solve problems with an "orientation" toward objects, but as one learns to write Clojure well, the language guides one toward sublime and elegant functional solutions. An important thing about Clojure, however, is that it is not tied to the JVM; The original and most well-known implementation is for the JVM, but not only is there also Clojurescript, there are implementations that compile to CLR bytecode, Python, Ruby, and Actionscript. And with EDN, the extensible data notation, not only can you have your front-end and back-end codebases entirely in Clojure, you can transfer and store your data as Clojure too. I know not everyone has the same aesthetic tastes as I do, but I do like to think that there is something beautiful about this.

Finally, I must say that while Scala does indeed have a first-class web framework in Play, web frameworks are first-class objects in Clojure. Joke. Sort of. I personally do not want to have a monolithic pre-packaged web framework to bow down to; the Clojure community is a community of hackers, we like to make things out of other things, and to take things apart. Clojure and the work of its community allows me to compose my own web framework as needed very very quickly–and to drastically change it just as fast. I'm not saying you should stop doing what you like to do, but if you gave Clojure a chance...dude: it's addictive.

Re:Choosing a Web Framework/Language Combo for the Next Decade by lmm on Wednesday May 21, 2014 @04:52PM (#7780705)
> I really don't want to write code that corresponds line-by-line to Java. If I wanted to do that, I'd just write Java.

The code I write now is nothing like Java, but it's a question of how you get from there to here. When I started Scala I wrote what I'd write in Java. In the first week I removed the semicolons. In the second week I started to use function literals. Then I started using match/case. Later I found out about for/yield with futures. And so on. I learnt the language at my job, and I was delivering real, user-facing features in it from day 1. I don't think I could've done the same with Clojure.

(Reasonable people can disagree on syntax; I find that Scala's lets you get very close to the language of the domain (e.g. see the Spray "routing DSL") and that's worth the cost it imposes on the macro system)

Re:Choosing a Web Framework/Language Combo for the Next Decade by seanmcdirmid on Wednesday May 21, 2014 @08:00AM (#7777734)
Persistent structures are almost always O log N (because they have to be trees). You can fix your branch out for better performance at the cost of more wasted space. You will never be as fast as an array.

Also, sometimes you want your updates to a data structure to be seen via an alias (happens often actually), then we are back at square one again.

Systems people are much more pragmatic about this: they see the trends in hardware before we PL people do, and their solution has never been functional programming. Ok, well...maybe once with MapReduce (but Jeff and Sanjay are both systems PL people).

Re:Choosing a Web Framework/Language Combo for the Next Decade by mtrimpe on Wednesday May 21, 2014 @11:00AM (#7778585)
At n=32 the performance costs are as negligible as dynamic typing once was (even less I'd argue.) As far as I can tell that very much puts us at the point in time where mutable state is usually a premature optimization.

Adopting it successfully does require separating essential from accidental state which naturally leads to some variant of FRP being adopted to manage (re-)derivation of accidental state; which is usually the hard to explain part.

I am wondering what you do see systems people doing by the way? I'm always interested in broadening my perspective on this.

Re:Choosing a Web Framework/Language Combo for the Next Decade by seanmcdirmid on Wednesday May 21, 2014 @09:09PM (#7781619)
n=32 leads can lead to lots of sparseness, memory pressure, bad locality (given sparseness); its not going to fly easily as the default. The shared memory aspect is even a bigger hurdle: people share memory for a reason, its not very often accidental. FRP is hardly the answer, but I work on a competing paradigm so mark me as biased.

The systems people I work with do a lot of key value stores (sharded NoSQL-style databases), there is a lot of pipelining for data parallel processing (MapReduce, Pig), and there is still a lot of classic locking going on, throughput is important. Oh, and lots of Paxos, logging, state replication, etc... The normal stuff you could find at Google (note I don't work for Google).

On the HPC side, the people that really care about performance, there is some map reduce via MPI, but most of the big gains are to be had in CUDA, which is an extremely imperative programming model with very synchronized core executions and memory accesses.

I've learned that whenever the FP people talk about high performance, they usually mean something else (like concurrency that isn't so slow), rather than the real high performance stuff that the big kids (systems and HPC communities) are doing.

Re:Choosing a Web Framework/Language Combo for the Next Decade by mtrimpe on Thursday May 22, 2014 @06:49AM (#7783135)
I never meant to imply FP is already the right choice for big data (which is what I think you refer to by 'systems people') or high performance computing.

The reality though is that well over 99% of the market works with data sets for which, with current hardware, the performance costs of these persistent data structures are very much irrelevant.

When you add FRP on top of that so that you can keep your managed state minimal you can actually often achieve quite dramatic performance improvements over the traditional hand-written data-to-UI synchronisation.

For persistent data structures to come into their own for big data quite a few more things are needed of course; but if you look at Nathan Marz's Lambda Architecture for example it's little more than a handwritten system for making large scale persistent data structures manageable with today's systems already.

I'm fairly sure that tooling for that will only improve over time until the very thought of manually managing derivation pipelines becomes as quaint as manual memory management.

As for HPC; yes... I would not be surprised at all if at that level mutable state no longer is a premature optimization. Even there I could imagine many of the more high-level control structures benefitting from persistent data structures though.

About the FRP part; which competing paradigm are you working on? I wouldn't be able to name a 'competitor' so I'm quite curious.

Re:Choosing a Web Framework/Language Combo for the Next Decade by seanmcdirmid on Thursday May 22, 2014 @03:01PM (#7785683)
It actually involves versioned data structures (similar, but a but more complicated than persistent data structures, and outwardly they appear mutable):

http://research.microsoft.com/pubs/211297/managedtime.pdf

Re:Choosing a Web Framework/Language Combo for the Next Decade by mtrimpe on Thursday May 22, 2014 @03:40PM (#7785956)
I already had a feeling we were essentially arguing the same thing...

Yes; the managed time approach in Glitch is very interesting and indeed a competitor towards addressing the same problem I originally raised.

The core of my original statement/problem definition was that real mutable state, i.e. throwing away history by default, was no longer the smart thing to do given current hardware.

From what I can tell you would also agree with that...

Re:Choosing a Web Framework/Language Combo for the Next Decade by seanmcdirmid on Thursday May 22, 2014 @06:25PM (#7786929)
I would, but it doesn't necessarily have to happen with persistent data structures, and I would also argue that they aren't really sufficient (the history has to be useful, after all). They are convenient, and I'm using trees in my current implementation.
Re:Choosing a Web Framework/Language Combo for the Next Decade by oskarth on Wednesday May 21, 2014 @08:22AM (#7777795)
> virtually everyone still underestimates the impact this will have and (or perhaps because) it's very difficult to get that across in writing.

Why is it hard to get across in writing?

Re:Choosing a Web Framework/Language Combo for the Next Decade by mtrimpe on Wednesday May 21, 2014 @08:38AM (#7777870)
I'd say because of two reasons:

a) it requires putting together a fairly large number of concepts of moderate complexity (and you never know which ones your readers already understand.)

b) many of the concepts sound trivial and people usually don't grasp their power until you've listed X amounts of things it would enable.

And to be clear; it's hard for me to put in writing for now ;)

Re:Choosing a Web Framework/Language Combo for the Next Decade by nwmcsween on Thursday May 22, 2014 @04:00AM (#7782649)
Persistent structures do not map well with how computers work in reality.
Re:Choosing a Web Framework/Language Combo for the Next Decade by tormeh on Wednesday May 21, 2014 @06:28AM (#7777477)
The problem with Haskell is its syntax. Too many arbitrary and traditionless things to memorize. It's curious that the Haskell developers try to one-up the rest of the language space in nearly every other space, but choose such a weird and unhelpful syntax.

Look at Python: The only reason people started to use it is because of the syntax. Now it's slowly eating Matlab and R in science - two specialized languages beaten in their own domain by a general purpose one because the general purpose one has nicer syntax.

How great wouldn't it have been to have a Haskell-like language with a Python-like syntax? But no, Haskell needs a "first-class syntax", as if keystrokes are the limiting factor in development.

Re:Choosing a Web Framework/Language Combo for the Next Decade by mercurial on Wednesday May 21, 2014 @07:26AM (#7777626)
> The problem with Haskell is its syntax. Too many arbitrary and traditionless things to memorize. It's curious that the Haskell developers try to one-up the rest of the language space in nearly every other space, but choose such a weird and unhelpful syntax.

I've seen this criticism before, and I don't understand it. The syntax of Haskell is not that big. There are some things a bit funky about it, especially the indent rules, but I don't see what there is to be mystified about.

On the other hand, it does introduce a lot of mind-bending concepts if your background includes imperative programming and no category theory, and that's typically what people find hard to grok. You don't find a pile of "Haskell syntax cheatsheets", you find a bunch of monad tutorials instead.

Re:Choosing a Web Framework/Language Combo for the Next Decade by akavel on Wednesday May 21, 2014 @10:53AM (#7778549)
For me at least, that means exactly what you mention in your other reply below. Even more than weird operators themselves, but the problem for me is that they're hard to vocalize in my mind when reading. In other words, this:

http://stackoverflow.com/questions/7746894/are-there-pronoun...

http://www.haskell.org/haskellwiki/Pronunciation

plus any more potentially introduced by any libs, or whatever else. When I see any Haskell code, I feel that I trip on those every time. And among them, especially confusion between: -> => <- -< >>= >>

Re:Choosing a Web Framework/Language Combo for the Next Decade by tormeh on Wednesday May 21, 2014 @07:39AM (#7777664)
Yeah, but if the monads were the only problem it would be ok (for me at least). But I'm asked to learn monads while also learning this weird syntax. I'm asked to learn something I don't understand in a syntax I don't understand. It's a bit too much. Like a math lecture in which, aside from the new concepts, the lecturer has decided to replace the traditional symbols (+,-, etc) with his new and equally arbitrary ones (¤, @). Except, of course, that Haskell's syntax is often more arbitrary than its competitors.
Re:Choosing a Web Framework/Language Combo for the Next Decade by mercurial on Wednesday May 21, 2014 @08:36AM (#7777853)
Do you have a few concrete examples, out of curiosity?
Re:Choosing a Web Framework/Language Combo for the Next Decade by tormeh on Wednesday May 21, 2014 @01:30PM (#7779506)
Well, I basically went "fuck this" after looking at Haskell for a while, but there's surfaced some links in the comments (thanks, akavel) and they provide some examples: >>=, >>, >, <$>, <$, <>, $, ., !!, !, <|>, :, ::, \, @, ~, -<, <-, =>, -> Taken together the syntax makes no effort whatsoever to be self-explanatory. I could handle it if it was the only programming language I would ever use, but in the polyglot world we live in and with my leaky bucket of a long-term memory this is not good enough.
Re:Choosing a Web Framework/Language Combo for the Next Decade by mercurial on Wednesday May 21, 2014 @04:26PM (#7780569)
I see what you mean. Most of these are custom operators which happen to be in the stdlib, but I wouldn't say :: or ->, for instance, should feel particularly mysterious with a bit of practice.
Re:Choosing a Web Framework/Language Combo for the Next Decade by codygman on Sunday May 25, 2014 @02:57AM (#7795703)
bind, ??, more than, fmap, ??, monoid, f $ x f(x), f . g . x == f(g(x)), x !! 1 == x[1], seq, ??... and \ is lambda.
Re:Choosing a Web Framework/Language Combo for the Next Decade by seanmcdirmid on Wednesday May 21, 2014 @07:53AM (#7777718)
> The syntax of Haskell is not that big.

Neither is APL's syntax.

Too much operator overloading is just a bad idea.

Re:Choosing a Web Framework/Language Combo for the Next Decade by mercurial on Wednesday May 21, 2014 @08:31AM (#7777827)
There is not really any operator overloading going on. You can implement Monoid for your data structure, but as long as you follow the laws... well, you are implementing operations in the correct way, there is no abuse there, nothing that's surprising and going to bite whoever is reading your code.

But one thing where Haskell errs, in my opinion, is in allowing arbitrary infix operators with random ASCII characters, which library maintainers take as an encouragement to each create their own DSLs which totally makes sense to them and nobody else, but that's not the same thing as saying that Haskell-the-language has a huge syntax. Maybe that's what you mean.

Re:Choosing a Web Framework/Language Combo for the Next Decade by platz on Wednesday May 21, 2014 @03:15PM (#7780148)
And so with Scala (user-defined operators) and Clojure (macros).
Re:Choosing a Web Framework/Language Combo for the Next Decade by tormeh on Wednesday May 21, 2014 @03:50PM (#7780365)
Yeah, have you seen what the Scalaz guys are doing? The operators aren't even ASCII! Apparently, there's something about monads that absolutely requires weird symbols.
Re:Choosing a Web Framework/Language Combo for the Next Decade by zerr on Wednesday May 21, 2014 @06:52AM (#7777540)
After fairly long time playing with Haskell, I find it quite beautiful and pleasure to use, but only for theory/book-ish use cases. As for real world usage - it is quite ugly and cumbersome, e.g. when you need some error handling and multiple monads using (with transformers), etc...

Another quick way to measure this - compare that beautiful pseudo quick sort to real quick sort (e.g. using Array.ST)...

Re:Choosing a Web Framework/Language Combo for the Next Decade by mercurial on Wednesday May 21, 2014 @07:32AM (#7777654)
I have to say that I agree with you. In principle, I find the notion of an effect system extremely powerful, both for safety and optimization, but Haskell's way of intermingling effects using monadic towers is terribly awkward and cumbersome, not to mention that it comes with a mental cost.
Re:Choosing a Web Framework/Language Combo for the Next Decade by lmm on Wednesday May 21, 2014 @06:06AM (#7777408)
I have little to add, but I'd make a similar case for Scala. If you're tied to the JVM or existing code, or don't want to make the leap to laziness/purity/immutability for everything from day 1, Scala can be a smoother way to learn these new concepts (which will ultimately make you more productive whichever language you use).

(And if you're going to use Play, Scala is very much the best way to do so)

Re:Choosing a Web Framework/Language Combo for the Next Decade by arethuza on Wednesday May 21, 2014 @06:22AM (#7777461)
Out of interest, what would you say are the kinds of bugs that using something like Haskell helps you avoid? I've had a look at Haskell before and while all the individual parts looked reasonable I struggled to understand both what an application would look like at a high level and what the inherent advantages are (not saying there aren't any - just that they didn't jump out to me).

In most languages I have learned I've generally reached a point fairly quickly (without hours) where I've thought "wow - this is cool!" and this is generally because of enabling me to do something more easily than in other languages - I've never got to that point with Haskell.

Note - this is just my own observation, not a criticism of Haskell or any of the resources I have used to try and learn it!

Re:Choosing a Web Framework/Language Combo for the Next Decade by rfergie on Wednesday May 21, 2014 @07:09AM (#7777579)
http://programmers.stackexchange.com/questions/215482/what-a... has a good list of the type (no pun intended) of error that type systems can prevent
Re:Choosing a Web Framework/Language Combo for the Next Decade by zimpenfish on Wednesday May 21, 2014 @06:41AM (#7777508)
From my experience, using Haskell avoids all bugs because you'll never get anything deployed to production what with it being intractable murk.
Re:Choosing a Web Framework/Language Combo for the Next Decade by cgag on Wednesday May 21, 2014 @04:41PM (#7780648)
I love Haskell because I don't have to depend on my working memory. It's so nice to have the compiler tell me everywhere some type I've changed is used, or places I've forgotten to consider possible values.
Re:Choosing a Web Framework/Language Combo for the Next Decade by ahuth on Wednesday May 21, 2014 @07:33AM (#7777657)
I disagree. Haskell is unfamiliar, AND it's difficult. They're separate.

In any case, I'm definitely not smart enough to use it. The issue isn't functional programming, though, which is why Elixir looks very interesting.

Re:Choosing a Web Framework/Language Combo for the Next Decade by campezzi on Wednesday May 21, 2014 @05:49AM (#7777363)
Do you recommend any framework for Haskell web development? I really liked toying around with the language, but I hit a brick wall when trying to build something "real" with it - it's hard to find decent guides that made the jump between the basics of writing functions, using recursion, etc and using the language on a full-on application.

Given I have been working with web development in Ruby and PHP for years, I would love to find a nice "getting started" guide for a good/well established Haskell framework.

Re:Choosing a Web Framework/Language Combo for the Next Decade by psibi on Wednesday May 21, 2014 @05:55AM (#7777373)
I have been using Yesod in my day job with great success.

It also comes along with a free online book: http://www.yesodweb.com/book

Other popular alternative is Snap framework.

Re:Choosing a Web Framework/Language Combo for the Next Decade by platz on Wednesday May 21, 2014 @03:22PM (#7780183)
Happstack and Scotty are probably a little simpler for getting started imho
Re:Choosing a Web Framework/Language Combo for the Next Decade by dllthomas on Wednesday May 21, 2014 @02:25PM (#7779864)
I also think "it shines in finance" is a little weird. It's used in finance because it's an industry with a premium on correctness and a sympathy for math, but I don't think it's generally better suited to solving those problems than to solving other problems. If I had to point to one area that Haskell is clearly better at than "mainstream" languages it would probably be tree manipulation - and as a consequence compilers - due to structural pattern matching (for small stuff) and evaluation strategies (for larger and more abstract stuff).