<html><head><style>
body {
        font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
        padding:1em;
        margin:auto;
        background:#fefefe;
}

h1, h2, h3, h4, h5, h6 {
        font-weight: bold;
}

h1 {
        color: #000000;
        font-size: 28pt;
}

h2 {
        border-bottom: 1px solid #CCCCCC;
        color: #000000;
        font-size: 24px;
}

h3 {
        font-size: 18px;
}

h4 {
        font-size: 16px;
}

h5 {
        font-size: 14px;
}

h6 {
        color: #777777;
        background-color: inherit;
        font-size: 14px;
}

hr {
        height: 0.2em;
        border: 0;
        color: #CCCCCC;
        background-color: #CCCCCC;
}

p, blockquote, ul, ol, dl, li, table, pre {
        margin: 15px 0;
}

a, a:visited {
        color: #4183C4;
        background-color: inherit;
        text-decoration: none;
}

#message {
        border-radius: 6px;
        border: 1px solid #ccc;
        display:block;
        width:100%;
        height:60px;
        margin:6px 0px;
}

button, #ws {
        font-size: 12 pt;
        padding: 4px 6px;
        border-radius: 5px;
        border: 1px solid #bbb;
        background-color: #eee;
}

code, pre, #ws, #message {
        font-family: Monaco;
        font-size: 10pt;
        border-radius: 3px;
        background-color: #F8F8F8;
        color: inherit;
}

code {
        border: 1px solid #EAEAEA;
        margin: 0 2px;
        padding: 0 5px;
}

pre {
        border: 1px solid #CCCCCC;
        overflow: auto;
        padding: 4px 8px;
}

pre > code {
        border: 0;
        margin: 0;
        padding: 0;
}

#ws { background-color: #f8f8f8; }


.bloop_markdown table {
border-collapse: collapse;  
font-family: Helvetica, arial, freesans, clean, sans-serif;  
color: rgb(51, 51, 51);  
font-size: 15px; line-height: 25px;
padding: 0; }

.bloop_markdown table tr {
border-top: 1px solid #cccccc;
background-color: white;
margin: 0;
padding: 0; }
     
.bloop_markdown table tr:nth-child(2n) {
background-color: #f8f8f8; }

.bloop_markdown table tr th {
font-weight: bold;
border: 1px solid #cccccc;
margin: 0;
padding: 6px 13px; }

.bloop_markdown table tr td {
border: 1px solid #cccccc;
margin: 0;
padding: 6px 13px; }

.bloop_markdown table tr th :first-child, table tr td :first-child {
margin-top: 0; }

.bloop_markdown table tr th :last-child, table tr td :last-child {
margin-bottom: 0; }

.bloop_markdown blockquote{
  border-left: 4px solid #dddddd;
  padding: 0 15px;
  color: #777777; }
  blockquote > :first-child {
    margin-top: 0; }
  blockquote > :last-child {
    margin-bottom: 0; }


.send { color:#77bb77; }
.server { color:#7799bb; }
.error { color:#AA0000; }</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class="bloop_markdown"><p>This is a herculean effort due, among other things, to Spark’s heavy reliance on function serialization. Not to say you can’t do it, but it’s going to be a huge amount of effort to build and maintain it in any way that provides feature parity with any JVM language on Spark, and of course you’re going to be going Haskell -> C -> JVM, and JVM -> C -> Haskell for everything, which entails its own set of delightful pains.</p>

<p>If you’re not too picky about the ML, I’d suggest a better path is contributing to <a href="http://slamdata/truffled-purescript">PureScript on the JVM</a> (either that project or another one). PureScript’s semantics map cleanly to the JVM’s and very good native interop is possible; in addition, the PureScript compiler is designed for compiling to different backends (i.e. it has no runtime and will necessarily utilize the target’s native runtime environment).</p>

<p>One could ease Spark integration by targeting <a href="http://www.slideshare.net/Odersky/scala-days-san-francisco-45917092">TASTY</a> or generating functional code compatible with Scala / Java 8 runtimes.</p>

<p></p></div><div class="bloop_original_html"><style>body{font-family:Helvetica,Arial;font-size:13px}</style><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div> <div id="bloop_sign_1436971330891131904" class="bloop_sign"><span style="font-family:helvetica,arial;font-size:13px"></span>-- <br>John A. De Goes<div>Follow me @jdegoes</div></div> <br><p style="color:#000;">On July 14, 2015 at 9:13:05 PM, Vasili I. Galchin (<a href="mailto:vigalchin@gmail.com">vigalchin@gmail.com</a>) wrote:</p> <blockquote type="cite" class="clean_bq"><span><div><div></div><div>



<title></title>


I am looking to suppprt Haskell (OCaml ??) for <a href="http://apache.spark.org">apache.spark.org</a>. Currently there is
support for programming language "R" which has functional features
(not as rich as Haskell, OCaml, et. al.) and does lazy evaluation.
I am going to drop back and look at the R->Scala/Java
implementation BUT I will also read your link.  Any
more.suggestions are gratefully welcome.
<div><span style="font-size:15px"><br></span></div>
<div><span style="font-size:15px">Kind thx,</span></div>
<div><span style="font-size:15px"><br></span></div>
<div><span style="font-size:15px">Vasili<br></span><br>
On Tuesday, July 14, 2015, Jason Dagit <<a href="mailto:dagitj@gmail.com">dagitj@gmail.com</a>> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Did you look at java bridge?
<div>  * <a href="https://hackage.haskell.org/package/java-bridge" target="_blank">https://hackage.haskell.org/package/java-bridge</a></div>
<div><br></div>
<div>Perhaps counter-intuitively, you're probably better off
defining a protocol and using that for interop. Something like
zeromq could simplify the communication.</div>
<div><br></div>
<div>The main hassle with a full interop is the difference between
the notions of types in the two languages. For instance, subtyping
on the Java side doesn't really map well to the Haskell side.</div>
<div><br></div>
<div>I would say that it forces attempts at a general interop to go
with a least common denominator approach. In the extreme, this
degenerates back to having the code on each side pretend like it's
talking to C.</div>
<div><br></div>
<div>Whereas designing a message protocol for your task allows you
to incorporate domain specific knowledge and thus avoid a general
solution and also leave out things you will never use.</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Tue, Jul 14, 2015 at 7:14 PM, Vasili I.
Galchin <span dir="ltr"><<a href="javascript:_e(%7B%7D,'cvml','vigalchin@gmail.com');" target="_blank">vigalchin@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hello,<br>
<br>
      I have been looking at Hackage for a
package/library that<br>
supports Haskell interoperability with Java/Scala. Didn't see any
such<br>
support. If true, is there any project in the works?<br>
<br>
Thanks,<br>
<br>
Vasili<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="javascript:_e(%7B%7D,'cvml','Haskell-Cafe@haskell.org');" target="_blank">Haskell-Cafe@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
</blockquote>
</div>
<br></div>
</blockquote>
</div>


_______________________________________________
<br>Haskell-Cafe mailing list
<br>Haskell-Cafe@haskell.org
<br>http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
<br></div></div></span></blockquote></div><div class="bloop_markdown"><p></p></div></body></html>