Alex
You've become a very sophisticated Haskell programmer!
We did at one stage do something like this, by making list comprehensions into monad
comprehensions. So
[ x*x | x <- xs, pred x]
meant the same as
do { x <- xs; if pred x then mzero else return (); return (x*x)}
But in the next iteration of the language we undid the change, a controversial
decision that some still regret. Because na�ve users were getting too many perplexing
error messages about monads and functors when they thought they were just manipulating
lists.
Haskell is pretty good about letting you install a different Prelude, so you could try
it yourself.
Simon
| -----Original Message-----
| From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of S. Alexander
| Jacobson
| Sent: 08 April 2004 04:42
| To: Haskell Mailing List
| Subject: [Haskell] overuse of maybe and [] in prelude and libs
|
| It feels like the Prelude insists on using [] and
| Maybe too much. I keep writing things like this:
|
| foo = foldl union emptySet $ maybe mzero return $ lookup pairs key
| goo = maybe emptySet toSomething $ lookup pairs key
|
| which really should look like this:
|
| foo = concat $ lookup pairs key
| goo = fmap toSomething $ lookup pairs key
|
| But, even if we don't have a Monadic/Functor Set,
| foo should at least be:
|
| foo = foldl union emptySet $ lookup key
|
| In other words, shouldn't Prelude define concat
| and lookup as:
|
| concat = foldr mplus mzero -- (Also, see PS)
|
| lookup key [] = mzero
| lookup key ((x,y):xyz)
| | key == x = return y
| | otherwise = lookup key xyz
|
| And if it is a fundamental problem adding
| constraints to instances, why not add all
| automatically derivable classes as constraints to
| all the Prelude classes (esp. Monad and Functor!)
| and automatically derive instances of all
| derivable classes unless the programmer defines
| his/own methods.
|
| -Alex-
|
| PS Shouldn't concat be defined with foldl and not
| foldr? Doesn't foldr imply that you can't concat
| infinite lists? (I know this is a FAQ, but
| where?)
|
| _________________________________________________________________
| S. Alexander Jacobson mailto:[EMAIL PROTECTED]
| tel:917-770-6565 http://alexjacobson.com
| _______________________________________________
| Haskell mailing list
| [EMAIL PROTECTED]
| http://www.haskell.org/mailman/listinfo/haskell
_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell