I haven't been following this thread closely, but would it be rude to suggest that someone who
doesn't want to put the effort into learning the (admittedly difficult) concepts that Haskell
embodies shouldn't be using the language? Haskell was never intended to be The Next Big Popular
Language. It was intended to be a purely functional language for people who want to use purely
functional languages and who are willing to learn new concepts if it enables them to program in that
style. That now includes IO and monads, so if people aren't willing to learn that, they should go
on using python or whatever. That said, of course we should strive to have better teaching
materials, but there are a number of good IO/monad tutorials on the web.
I used to love programming in python, but then I learned Scheme, then Ocaml, and then Haskell and at
each stage I absorbed a few new concepts. Now programming in python feels very primitive to me.
Haskell is interesting because it enables us to write programs more effectively (in many cases, at
least) than we can in other languages, but the learning curve is steep -- there ain't no such thing
as a free lunch.
Mike
David Menendez wrote:
On Dec 10, 2007 1:44 PM, Dan Piponi <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>> wrote:
When someone comes to me and says "I have this Python script that
scans through these directories and finds the files that meet these
criteria and generates a report based on this template, could I do it
better in Haskell?" it'd be good to have a better answer than "to do
this you could use the IO monad, but to do things properly you need to
understand monads so here, learn about the List monad and the Maybe
monad first, understand how this interface abstracts from both, come
back when you've finished that, and then I'll tell you how to read and
write files".
I thought your blog post about the IO monad for people who don't care
about monads (yet) was a pretty good start.
As it happens, the IO monad was one of the things that attracted me to
Haskell. When I was learning SML in college, I wondered how one could do
I/O in a functional style. SML provides I/O via functions with
side-effects, which struck me as crude and contrary to the functional
style.
Years later, I encountered Haskell and learned that it handled I/O tasks
using something called the "IO monad". I had no idea what a monad was,
but I understood the implications: Haskell could be referentially
transparent *and* do I/O. This was what inspired me to learn the language.
As I learned more Haskell, I discovered the other monads and the Monad
class and the full generality of the "do" notation. Eventually, a light
came on and monads suddenly made sense.
I don't know if it's best to learn the IO monad before or after other
monads. I suspect no choice is right for everyone. An experienced
programmer who is new to Haskell is going to have different questions
than a beginning programmer with no preconceived notions.
--
Dave Menendez <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
<http://www.eyrie.org/~zednenem/ <http://www.eyrie.org/~zednenem/>>
------------------------------------------------------------------------
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe