David MENTRE wrote:
> Hello Robert,
>
> 2005/7/18, Robert Morelli <morelli@cs.utah.edu>:
>
>> 1. The FP community tends to emphasize low level issues rather than
>>the larger scale issues that concern most programmers. It is also
>>inept at practical documentation and advocacy.
>
>
> What do you call practical documentation?
Let me give you an example which I think is quite typical.
When I first started learning functional languages, I chose Haskell
to start with. I simultaneously read several books. Of these, I'll
mention Hudak's The Haskell School of Expression, because it was the
most admirable of the lot in terms of addressing ordinary programming
issues. However, not only did Hudak's book fail to address any higher
level programming principles, it didn't even properly address the
basics of getting even a small real program running. To my recollection
(going back some time), it ignored or gave very short shrift to basic
issues like commenting conventions, file extension conventions,
directory layout, documentation tools, etc., much less anything like
debugging techniques. It didn't even explain the module system to the
point where the reader would be able to write a working program. Every
example in the book was an exerpt that could not run by itself. The
code accompanying the book was written with a literate programming
technology that was not discussed in the book. Etc.
Mind you, there are excellent beginner's books on Haskell, like
Davie's "An Introduction to FP Systems using Haskell," which introduces
basics of the language along with the basics of its theory and
implementation. However, it's not a practical programming book,
and is totally focused on low level issues. Peyton-Jones' expository
articles are models of clarity, but aren't complete accounts of the
language.
The situation with Scheme is even worse. Abelman and Sussman is
a classic, but hardly practical. I find it unfortunate that
Dybvig's book is the only attempt at a general introduction to the
language. As an aside, I find the documentation for SCSH, or lack
thereof, a tragic missed opportunity.
OCaml, with its O'Reilly book, probably has the best practical
documentation of any functional language around. But it's just
not even a far cry from what languages like Java enjoy.