9 ms·
Scala is an obvious option as well. I haven't used Scala but it's surely more palatable to Haskellers than plain Java. Also. There is work underway to enable G
by Buttons840 10y ago
Scala is an obvious option as well. I haven't used Scala but it's surely more palatable to Haskellers than plain Java.
Also. There is work underway to enable GHC to compile for the JVM.
- wtracy 10y agoTo expand on this suggestion: Scala isn't big on purity (AFAIK the language has no concept of pure functions out of the box) but it is big on immutable data types, and mostly-pure functions arise naturally when you're working with immutable types. Immutable types happen to be something that is familiar and comfortable to Java developers. I would therefore expect to meet a lot less resistance to "syntactic sugar and immutable classes" than "functional programming with pure functions" even if the end result is 80 percent the same.
- roflc0ptic 10y agoThis was the compromise our team made. Our team was having a bad time dealing with Spring. Our lead dev is a functional buff who really likes Haskell, and got us all hype about trying something new. We picked scala in lieu of Haskell because the learning curve with Haskell was a much harder sell. We avoid mutable data types unless there's a compelling reason (interop with Java libraries, for example), and most of our functions are implicitly pure. ScalaZ might have some purity constraint, idk. 5 months in with Scala and it has been a wonderful experience. Now I just have to convince our front end dev to switch over to Scala.js...
- MustardTiger 10y agoWe tried the same thing, but it did not go well at all. We picked scala because people should be able to learn it easier and more gradually. But we found as people learned FP using scala, they realized how much scala held them back. We ended up redoing a PHP project in scala, then as it was 80% done redoing it again in haskell. And then from there out using haskell for everything.
- roflc0ptic 10y agoDo you have any specific examples of how scala would hold y'all back in relation to haskell? I actually have trouble imagining how one could justify, in a business, scrapping an 80% complete rewrite to rewrite it again in a different language. I wonder what would be so compelling.
- MustardTiger 10y agoScala is an OO language with FP tacked on, so it basically defaults to "make everything a pain". It was easy to justify rewriting it again because it only took two weeks to do it. A re-write is much faster than initially writing it, you're just copying yourself.
- premium-concern 10y agoI wonder why Haskell people feel so hurt about Scala... It's much closer to Haskell's capabilities than pretty much any other functional language. It has better type classes, the compiler just got type inference for partially applied type constructors, it supports programming with dependent types and implicit parameters allow you to let the compiler prove almost arbitrary things. If your definition of FP means "purity", you pretty much discarded all languages traditionally considered to be functional. There is nothing wrong with liking Haskell more than Scala, but I think your claims are not very well-founded.
- kmiroslav 10y ago> It has better type classes Haskell and Scala win and lose on different criteria but for type classes, I find Haskell's syntax and semantics infinitely more elegant, more terse and more flexible than Scala's. Defining type classes in Scala is a cacophony of syntax boiler plate riddled with implicits and brackets. Haskell is much more elegant in that area.
- premium-concern 10y ago
- carterschonwald 10y agoOn the latter front that jvm work is a summer of code student. So on one hand it's definitely exciting work, there's definitely a bit of work between that .. Working and it being a tier one backend for ghc. I've been haskellin at a large Megacorp environment for the past 1.5 years, with lots of smaller freelance before that. There's a lot of different value props one can make for different tools. One pragmatic case I make is that in Haskell land it's super easy and rewarding to to engage with upstream to resolve any problems I hit. One other angle that the imvu article and I think a lot of the comments over look is that using Haskell as a shared concrete specification / engineering design substrate for communicating actually makes it much much easier to collab with colleagues on pretty crazy projects. Even if the deployed system isn't ultimately written in Haskell. That said, with the right colleagues, having the freedom / trust to choose tools that help you best deliver is always the ideal. :)