2

As of today it is not possible to run Haskell programs on the JVM (see this question).
I'm wondering if there is a production-ready functional language that supports a fair amount of the abstractions Haskell offers like:

  • static typing
  • type inference
  • type classes
  • currying
  • lazy evaluation
  • functors, applicative functors, monads, monad transformers ...

Edit : With production ready I mean:

  • good documentation (books, websites, tutorials)
  • libraries
  • active (large) community, mailing lists, ...
  • stable and mature (no academic abandonware)

In general a language that is likely to have a 'future'.

I heard about Frege and CAL but don't know about their status.

Community
  • 1
  • 1
jules
  • 1,897
  • 2
  • 16
  • 19
  • production ready is not well defined. you missed http://jaskell.codehaus.org/ in your list – Amir Afghani Jan 16 '14 at 22:10
  • http://www.scala-lang.org/ don't know if it's production-ready..what ever this means ;) – duedl0r Jan 16 '14 at 22:12
  • 1
    If you don't find one, Java 8 with "Stream" (a misnomer) allows sufficient nice (functional) programming (not 100% first citizen functions), and is production ready, has a Java programmer base, and has good IDE support (autocompletion e.a.). I love Scala, but find it too complex for production (its readability, semantic accountability). – Joop Eggen Jan 16 '14 at 22:21
  • My knowledge of functional language is very poor (so I comment rather than answer) but what about Closure? – C.Champagne Jan 16 '14 at 22:25
  • @HovercraftFullOfEels My mistake! You are right I meant Clojure. Thanks. This is the kind of mistake I always make even when I try to pay attention to what I am writing – C.Champagne Jan 16 '14 at 22:37
  • 2
    Jaskell is in no way comparable to Haskell. One of the most striking features of Haskell is it's type system and all the good things which arise from that (like restriction of side effects). There are no static types in Jaskell, and so no static typing nor type classes - features explicitly mentioned by op. – scravy Jan 17 '14 at 04:03
  • Frege is surely not "production ready", for any value of "production ready". It will become so only through community contributions. So feel free to do something about it. – Ingo Jan 20 '14 at 11:41

2 Answers2

1

I don't think there's a production ready Haskell-like language that would run on the JVM.

But keep an eye on Ermine. It was written in Scala, now it's being rewritten in Haskell but the runtime will remain in Scala.

A book about Ermine is work in progress. And there's a talk about Ermine on Youtube.

Jakub Kotowski
  • 7,411
  • 29
  • 38
0

Depending on what you mean by functional:

Clojure, Scala, Groovy?

Erlang for JVM http://erjang.org/

Lesser known languages, might not suit "production ready"?:

Fantom http://fantom.org/

xtend http://en.wikipedia.org/wiki/Xtend_(programming_language)

ceylon http://ceylon-lang.org/documentation/1.0/introduction/

kotlin http://kotlin.jetbrains.org/

kawa http://www.gnu.org/software/kawa/news.html

Viktor Mellgren
  • 4,318
  • 3
  • 42
  • 75
  • Things you listed aren't much 'like haskell'. For example, Erlang isn't statically typed. – user3974391 Jan 17 '14 at 08:40
  • @user2894391 they were the closest that I could find, and then it's up to the one asking if they are enough "haskell like" and since I got the accepted answer, I suppose it helped enough. – Viktor Mellgren Jan 18 '14 at 12:32