Coginitive Dimensions and Haskell (was RE: [Haskell] overuse of maybe and [] in prelude and libs)

Simon Peyton-Jones simonpj at microsoft.com
Thu Apr 8 18:30:50 EDT 2004


Alas, no.

Simon

| -----Original Message-----
| From: S. Alexander Jacobson [mailto:alex at alexjacobson.com]
| Sent: 08 April 2004 17:25
| To: Simon Peyton-Jones
| Cc: Haskell Mailing List
| Subject: Coginitive Dimensions and Haskell (was RE: [Haskell] overuse of maybe and [] in prelude and
| libs)
| 
| Also, out of curiosity (since you are at MSFT) are
| you using any formal Cognitive Dimension stuff in
| the design of Haskell or its libraries?
| 
| http://www.gotdotnet.com/team/brada/describingandevaluatingapiusabilityatmicrosoft.ppt
| 
| Your Excel paper is mentioned in the end-notes.
| http://research.microsoft.com/Users/simonpj/papers/excel/excel.pdf
| 
| If so, is there a publicly available CD analysis
| of Haskell and its libs available?
| 
| -Alex-
| 
| _________________________________________________________________
| S. Alexander Jacobson                  mailto:me at alexjacobson.com
| tel:917-770-6565                       http://alexjacobson.com
| 
| 
| On Thu, 8 Apr 2004, Simon Peyton-Jones wrote:
| 
| > 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: haskell-bounces at haskell.org [mailto:haskell-bounces at haskell.org] 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:me at alexjacobson.com
| > | tel:917-770-6565                       http://alexjacobson.com
| > | _______________________________________________
| > | Haskell mailing list
| > | Haskell at haskell.org
| > | http://www.haskell.org/mailman/listinfo/haskell
| >



More information about the Haskell mailing list