Not as my _only_ programming language, no. But in general, why not? I value programming languages for what they can teach me. Haskell does make state slightly difficult. (If you need it, just use the IO monad, already. It doesn't bite.) But Haskell makes certain other things easy, things which are extraordinarily difficult in almost any other programming language.
For most of my professional life, I've been paid to program in Common Lisp, Scheme, Dylan, etc. Macros, to me, are an ordinary and natural part of programming. But after a while, macros become boring: 99% of them are just a thin syntactic wrapper over something I already know.
In Haskell, you don't build higher-order abstractions using macros. Instead, you build your higher-order abstractions using math. And math is almost entirely stateless, lazy and functional. You are forced to think in terms of combinators, abstract algebras, algebraic optimizations, and, yes, category theory. Category theory is the closest link between the lambda calculus and mathematical logic, for example, allowing you to transform some very exotic programming paradigms into actual code.
So, yes, Haskell is hard, and it's an ongoing research project. You will spend a lot of time reading papers. (And frankly, you don't want to maintain somebody else's code if you haven't read the same papers.) But some of those papers and theses have blown my mind more in a single weekend than some entire years of hacking in Lisp.
Haskell is not the most practical language I know. (State is not the biggest problem for me, but rather the lack of subtyping.) But Haskell is the language I'd be saddest to forget, and the language which has stretched my mind the most.
The original poster obviously enjoys learning new things: he posts on the Clojure mailing list, and hints that he has learned bits and pieces of Haskell. That places him early in the adoption curve. But when you want a language to get things done (one you can "use"), work from a comfort zone - start with a steady base, and branch out to unfamiliar topics. Some people are comfortable finding and reading academic papers as part of their workflow, and others aren't. That's their preference.
Other parts of your time should be spent the opposite way: start at the unfamiliar, and make it familiar. But it's not pragmatic to always work like this.
For most of my professional life, I've been paid to program in Common Lisp, Scheme, Dylan, etc. Macros, to me, are an ordinary and natural part of programming. But after a while, macros become boring: 99% of them are just a thin syntactic wrapper over something I already know.
In Haskell, you don't build higher-order abstractions using macros. Instead, you build your higher-order abstractions using math. And math is almost entirely stateless, lazy and functional. You are forced to think in terms of combinators, abstract algebras, algebraic optimizations, and, yes, category theory. Category theory is the closest link between the lambda calculus and mathematical logic, for example, allowing you to transform some very exotic programming paradigms into actual code.
So, yes, Haskell is hard, and it's an ongoing research project. You will spend a lot of time reading papers. (And frankly, you don't want to maintain somebody else's code if you haven't read the same papers.) But some of those papers and theses have blown my mind more in a single weekend than some entire years of hacking in Lisp.
Haskell is not the most practical language I know. (State is not the biggest problem for me, but rather the lack of subtyping.) But Haskell is the language I'd be saddest to forget, and the language which has stretched my mind the most.