Johan Tibell wrote:
* Why is this practice common in Haskell
Here are some guesses:
1. It's common in papers.
Maybe.
2. It's the default.
Probably not.
3. Lack of common interfaces.
Yes.
It's really quite frustrating that it is 100% impossible to write a
single function that will process lists, arrays, sets, maps, byte
strings, etc. You have to write several different versions. OK, so some
functions really don't make sense for a set because it's unordered, and
some functions don't make sense for a map, and so forth. But for
example, if I write some complicated algorithm that uses a list to store
data and I change that to a set instead, I now have to wade through the
function changing every operation from a list-op into a set-op. It's
really very annoying!
The problem - as I'm sure everybody is well aware - is that it's rather
hard to come up with a type system formulation that works even though
lists and arrays can store everything, unboxed arrays can only store
types X, Y and Z, sets and maps require ordered data, byte strings only
store bytes, and so on and so forth.
4. Haskell is a very expressive language. You can often write a whole
function definition on one line! Adding those module qualifications
makes your code slightly longer and it might just break your beautiful
one liner into two lines.
5. Writing "Hello" Prelude.++ "World" is just ugly. ;-)
In addition, I feel I should point out that only *very* recently did I
discover that it is in fact possible to import a module qualified and
still be able to refer to it easily. What do I mean by that? Well,
suppose I do
import Text.ParserCombinators.Parsec
I do *not* want to have to write "Text.ParserCombinators.Parsec.runParser"!!
Until very recently, it was not at all clear to me that there is
actually a very simple solution to this problem:
import Text.ParserCombinators.Parsec as P
Now I only have to write "P.runPaser", which is much shorter.
This fact probably needs to be mentioned more loudly - I'm sure I'm not
the only person to have overlooked it...
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe