Oh, why didn't you say you were learning Arrows? Then why not

freqs = sort >>> group >>> map (head &&& length)

So much more readable, don't you think? ;)

Either way, if you run into the dreaded monomorphism restriction:

    Ambiguous type variable `a' in the constraint:
      `Ord a' arising from use of `sort' at A.hs:6:40-43
    Possible cause: the monomorphism restriction applied to the following:
      freqs :: [a] -> [(a, Int)] (bound at A.hs:6:0)
    Probable fix: give these definition(s) an explicit type signature
                  or use -fno-monomorphism-restriction

you'll have to either add an explicit type annotation:

freqs :: (Ord a) => [a] -> [(a, Int)]

or else throw an arg onto it:

freqs x = map (head &&& length) . group . sort $ x

The latter hurts too much to write, so I always add the type.

Peter Verswyvelen wrote:
Nice!!! As I'm learning Arrows now, this is really useful :-)

Stuart Cook wrote:
  import Control.Arrow
  import Data.List

  freqs = map (head &&& length) . group . sort

I have used this function quite a few times already.


Stuart
_______________________________________________
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




_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to