Steve Downey wrote:

The primary goal of writing source code isn't to communicate to a
computer, but to communicate to a human being.
That implies that the communication should be at a high enough level
of abstraction to be easily understood by people, while not losing the
precision necessary for a computer.
OO, at least when done well, maps well to how people think. Things
that can be directed to perform actions. There is also a well
developed practice of OO analysis and design. It's not clear (at least
to me) that there is an equivalent set of practices for functional
programming.

Some of Haskell constructs come from the area of formal methods. Notably, algebraic types come from Z-notation (as I am told).

Formal methods in general and Z notation in particular precede OO as defined, for example, in Smalltalk-80.

Formal methods do not require substantial training and/or costly tools (although both exists). It can be trained in several weeks and start bringing benefits.

Here are two surveys (somewhat outdated) on the use of formal methods in industry:
http://citeseer.ifi.unizh.ch/39426.html
http://citeseer.ifi.unizh.ch/craigen93international.html

So, you can safely borrow methodics from formal methods and even think about Hindley-Milner type system as a theorem prover.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to