<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
This is a great idea!&nbsp; IMO this is also one of the main ways that
GUI-based apps are likely to evolve into in the future.&nbsp; Cross-platform
GUIs are a pain in the butt in _any_ language (possibly excluding full
language platforms like Java/.NET, and I'll bet even those were a
nightmare for the original implementors).<br>
<br>
Mike<br>
<br>
aditya siram wrote:
<blockquote
 cite="mid:w2p594f78211004020959l31b87e32y135956f103400913@mail.gmail.com"
 type="cite">
  <pre wrap="">Yes Haskell is not strong on the GUI end of things but have you
considered turning your desktop app into a web app? I've done this for
a few things and really enjoyed the process. Haskell's STM is what
makes this so nice.

Basically the you start a Haskell service on port &lt;some-large-number&gt;
and make AJAX calls to it from your web browser using a CGI script as
a go-between. In my case all data flows back and forth as JSON
objects. You could just as easily use XML.

For the front-end I used Qooxdoo [1] , an absolutely gorgeous
well-documented Javascript GUI framework but there are plenty to
choose from.

This has a couple of advantages, it encourages MVC by letting the
front-end take care of UI and the back-end does the logic and holds
state. It's easy to deploy- Javascript runs everywhere and so does
Haskell (the non-GUI parts anyway!). And it looks uniform across
platforms.

The disadvantages include security (but you can always restrict users
to localhost), and performance (you probably don't want to visualize
gigabyte size datasets in your browser). Additionally you now need to
add and configure an extra piece of software, namely the web-server.
Also you now have to learn Javascript and add that to the list of
things the maintenance programmer has to worry about. But if you can
learn Haskell, Javascript shouldn't be an issue. I've found that none
of these disadvantages are really show-stoppers.

hth,
deech

[1] <a class="moz-txt-link-freetext" href="http://qooxdoo.org/">http://qooxdoo.org/</a>

On 4/2/10, <a class="moz-txt-link-abbreviated" href="mailto:gladstein@gladstein.com">gladstein@gladstein.com</a> <a class="moz-txt-link-rfc2396E" href="mailto:gladstein@gladstein.com">&lt;gladstein@gladstein.com&gt;</a> wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">As a working engineer, one of my greatest frustrations is my inability
to use Haskell in the workplace. The unfortunate fact is that my media
industry clients use mostly Windows, some Macs, and no linux except for
servers. The core system works everywhere, but many contributed
libraries don't. GUIs are the big showstopper.

One of the reasons Java won out over Common Lisp is that it had huge
libraries. Franz's libraries were superb but few in number. One diehard
Lisp user converted his lab to Java because "Java gives you everything
you want, for free."

That languages are distinct from their libraries escapes a lot of
people; they see each language as a package. I met a COBOL programmer
recently (I'm not making this up) that was looking into Java. He didn't
see how people could use it, he said, because it had "thousands of
commands".

I'll stop whining now.

_______________________________________________
Haskell-Cafe mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a>
<a class="moz-txt-link-freetext" href="http://www.haskell.org/mailman/listinfo/haskell-cafe">http://www.haskell.org/mailman/listinfo/haskell-cafe</a>

    </pre>
  </blockquote>
  <pre wrap=""><!---->_______________________________________________
Haskell-Cafe mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a>
<a class="moz-txt-link-freetext" href="http://www.haskell.org/mailman/listinfo/haskell-cafe">http://www.haskell.org/mailman/listinfo/haskell-cafe</a>
  </pre>
</blockquote>
<br>
</body>
</html>