Re: [Haskell-cafe] Accounting Engine in Haskell

2010-06-23 Thread Paul Johnson

On 15/06/10 09:08, Amiruddin Nagri wrote:


I wanted some insight as to how Haskell is going to help me with my 
project. Also there has been some concerns because of lazy evaluation 
in Haskell and memory leaks associated with it. 
http://jlouisramblings.blogspot.com/2010/04/haskell-vs-erlang-for-bittorent-clients.html




In this talk:
http://www.galois.com/blog/2009/04/27/engineering-large-projects-in-haskell-a-decade-of-fp-at-galois/
Don Stewart says that memory leaks are a tractable problem.  Just 
profile and look for the retainers.


Lazy evaluation is a big win for large projects because it lets you 
modularise your solution; one function generates a data structure, and 
another function (or several) consume it.  If the data structure is big 
or infinite then conventional languages force you to either interleave 
the generator and consumer, or else jump through lots of hoops 
re-inventing lazy evaluation on a case-by-case basis.  With Haskell you 
just say what you mean and let the compiler worry about implementing it.



___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Accounting Engine in Haskell

2010-06-23 Thread Jason Dagit
On Wed, Jun 23, 2010 at 2:30 PM, Paul Johnson p...@cogito.org.uk wrote:

 On 15/06/10 09:08, Amiruddin Nagri wrote:


 I wanted some insight as to how Haskell is going to help me with my
 project. Also there has been some concerns because of lazy evaluation in
 Haskell and memory leaks associated with it.
 http://jlouisramblings.blogspot.com/2010/04/haskell-vs-erlang-for-bittorent-clients.html


 In this talk:

 http://www.galois.com/blog/2009/04/27/engineering-large-projects-in-haskell-a-decade-of-fp-at-galois/
 Don Stewart says that memory leaks are a tractable problem.  Just profile
 and look for the retainers.

 Lazy evaluation is a big win for large projects because it lets you
 modularise your solution; one function generates a data structure, and
 another function (or several) consume it.  If the data structure is big or
 infinite then conventional languages force you to either interleave the
 generator and consumer, or else jump through lots of hoops re-inventing lazy
 evaluation on a case-by-case basis.  With Haskell you just say what you mean
 and let the compiler worry about implementing it.


I think there are times when, in Haskell, you end up jumping through hoops
to get specific performance characteristics (iteratees for example), but it
appears to be the exception.  Usually evaluation on demand gives you what
you want and typically adding strictness in a few places fixes any
leakiness.  So, while Haskell is not perfect it gives you what you want more
often than not.  This translate directly into productivity gains.  It also
means that programmers tend to be happier using Haskell as they are fighting
the notation less.  Happy and productive is a win, even if you have to have
a period of optimization at the end of the release cycle.  I'd rather
optimize correct code than start with a fast buggy version.

I think at this point, the biggest weakness is that the tools for ensuring
properties about space and time usage are far less mature than our tools for
ensuring correctness.  How would you formally specify your space or other
performance needs?  On the other hand, our profiling tools are quite good
(ghc heap profiler, threadscope, criterion, etc) so as Don says, the problem
is tractable.

Jason
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Accounting Engine in Haskell

2010-06-15 Thread Amiruddin Nagri
My current project is about making an accounting engine that handles all
the journal entries, transactions, portfolios etc. The communication
with the engine is based on simple protocol, the things to be taken
care of in the order are consistency, handling large data(performance) and
availability.

I came across a video lecture by Simon Peyton Jones where he gives an
example from Financial domain (derivatives etc) to explain how haskell is
being used and the advantages provided.

I am interested in knowing if Haskell will be the right fit for my project.
My requirements are transactional nature, which I believe is one of the
strengths of functional programming, also handling large data set and being
available. there is no such requirement for partitioning of data and the
application is going to be centrally hosted on a single server.

AFAIK OCaml and other functional languages are heavily used in financial
domain, some of the reason are same as features I am looking for.
I wanted some insight as to how Haskell is going to help me with my project.
Also there has been some concerns because of lazy evaluation in Haskell and
memory leaks associated with it.
http://jlouisramblings.blogspot.com/2010/04/haskell-vs-erlang-for-bittorent-clients.html

Also, if you have any suggestions of the choice of programming
language, we have been looking into other functional languages like
 Scala and Clojure. But we have not dig deep on the performance
aspects of these languages, if someone can shed a light on the pros-
cons of these languages, it will help us very much to come to a
decision.

-Regards,
Amir
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe