
"Benjamin L. Russell"
Michael Zawrotny
wrote: [snip] The thing that I would most like to see would entitled "A Practical Guide to Haskell" or something of that nature.
[snip]
One is tempted to come to the conclusion that Haskell is not suited for "normal" programmers writing "normal" programs.
How would you define a "'normal' programmer writing 'normal' programs?" What exactly is a "'normal' program?"
That was sloppy on my part. My message was getting long, so I used "normal" as a short cut. I should know better after seeing all of the flamewars about whether or not FP is suitable for "real" work. What I meant by "normal programmer" was (surprise) someone like myself. I.e. someone who doesn't have much, if any background in formal logic, higher mathematics, proofs of various and sundry things, etc. By "normal program" I meant things like short utility programs that I might otherwise write in shell, python, perl, etc. or data extraction and analysis programs that I might write in in python, perl, C or C++ depending on the type of analysis.
(Perhaps another way of phrasing the issue is as the "declarative" vs. "proce dural" distinction, since the issue seems to be that of "what is" (types) vs. "how to" (imperative expression; i.e., procedures).)
Although there is some of that, for me at least, the types aren't a big deal. The main thing for me is figuring out how to actually get something done. Most of the things I've read have had tons of really neat things that you can do with functional abstractions, but it's all ... abstract. I would love to see something that is more about getting things done in a how-to sense, including IO. Much of the material I've seen tends to either relegate IO and related topics into a small section near the end (almost as if it were somehow tainted by not being able to be modelled as a mathematical function), or it goes into it talking about monads and combinators and things that make no sense to me.
While I agree that "A Practical Guide to Haskell" would indeed be a suitable alternative for programmers from the procedural school of expression, I would caution that such an introduction would probably not be suitable for all.
This is very true. I think that there is plenty of material that would be helpful for an SMLer to learn Haskell, but not much for someone who was was only familiar with with C or who was only comfortable with FP to the extent of understanding lambdas, closures and functions as values, but none of the more esoteric areas of FP. I'm advocating something along the lines of the "Practical Guide" I mentioned or the "Nutshell" book below.
Perhaps, ideally, two separate tutorials (or perhaps a single tutorial with t wo sections based on different viewpoints?) may be needed? The difficulty is that the conceptual distance between the declarative and procedural schools of thought seems too great to be bridged by a single viewpoint. It seems tha t any introduction favoring either one would risk alienating the other.
I agree that any single tutorial would be able to target both audiences.
Personally, I would really prefer "A Gentle Elementary Introduction to Haskel l: Elements of the Haskell School of Expression with Practical Examples," bu t some would no doubt choose "Haskell in a Nutshell: How to Write Practical Programs in Haskell."
I'm definitely the "Nutshell" type. If it were published, I'd buy it in a heartbeat. That's why it would be good to have both, everyone would have one that suited their needs. I'd like to say a couple things in closing, just so that people don't get the wrong idea. I like Haskell. Even if I never really write any programs in it, trying to learn it has given me a different way of thinking about programming as well as exposing me to some new ideas and generally broadening my horizons. My only problem is that I just can't seem to get things done with it. Please note that I am not saying here, nor did I say previously that it isn't possible to do things in Haskell. Obviously there are a number of people who can. I am simply saying that I am having trouble doing it. I would also like to mention that I really appreciate the helpful and informative tone on the list, especially on a topic that, even though not intended that way, could be considered critical of Haskell. Mike -- Michael Zawrotny 411 Molecular Biophysics Building Florida State University | email: zawrotny@sb.fsu.edu Tallahassee, FL 32306-4380 | phone: (850) 644-0069

On Fri, 5 Jan 2001, Michael Zawrotny wrote:
I would love to see something that is more about getting things done in a how-to sense, including IO. Much of the material I've seen tends to either relegate IO and related topics into a small section near the end (almost as if it were somehow tainted by not being able to be modelled as a mathematical function), or it goes into it talking about monads and combinators and things that make no sense to me.
Aside from variety of excellent theoretical papers on "monads and combinators and things" there are at least three or four down to earth attepmts to explain IO in simple terms. Check Haskell Wiki page for references. Personally, I like the "envelope" analogy, which is good enough for all practical IO manipulations: you open IO envelope, manipulate its contents and return the results in another envelope. Or you just pass unopened envelope around if you do not care reading its contents. But you are not allowed to pollute the rest of the program by throwing unwrapped "notes" around; they must be always enclosed in IO "envelopes". This is an example of a "howto recipe", as you asked for. There are plenty of library code and short applications around where IO monad is used for simple things, like reading and writing to files, communicating with external processes (reading a computer clock or something), exchanging information with web servers (CGI libraries and similar applications), etc. Some do data acquisition (like reading arrays from files) some do nothing more but simply write data out, as in my GD module. [This is not a self promotion, this is just the simplest possible useful IO application that comes to my mind now. Check also "funpdf" - there are plenty examples of reading, writing and interacting with a purely functional world.] Jan
participants (2)
-
Jan Skibinski
-
Michael Zawrotny