Alexy Khrabrov wrote:
Well, I'm thinking in terms of OOD/OOA/OOP -- Design, Architecture,
Programming. That's about the only way to model a bog system. Say I
have a stock market model -- I'll have a database of tickers, a
simulator to backtest things, a trading strategy, etc.
Do Haskell modules provide enough encapsulation to design a system in
terms of them? What are the design/architecture units in Haskell if
not OO-based?
Design of functional programs is very bottom-up. The general plan is to
identify the primitives for your domain and embed them in the language,
then solve your problems using those primitives. Evolving your
primitives and program concurrently as you get a better understanding of
the problem/solution.
A good intro to this kind of programming is 'On Lisp' by Paul Graham
(http://www.paulgraham.com/onlisp.html). Of course, he is using Lisp
instead of Haskell so many of the concrete techniques for implementing
this method are different[*]. However, the first section of the book
that talks about how you build something "on Lisp" is equally applicable
to building software "on Haskell".
I expect that in your domain, the primitives are things like: currency,
time series data, trades, strategies, and so on. The primitive
operations would let you "perform a trade", "back-test a strategy" and
so on. Since it is close to your chosen domain, I highly recommend you
look at
http://research.microsoft.com/~simonpj/Papers/financial-contracts/contracts-icfp.htm
[*] On Lisp makes heavy use of macros in Lisp, which have no analog in
Haskell, but can usually be substituted for lazy-evaluation and/or monads
--
Alan Falloon
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe