ListUtil.hs
{-# LANGUAGE TransformListComp #-} import GHC.Exts processInfo list = [ (the len, name) | name <- list, let len = length name, then group by len using groupWith ]
Prelude> :load ListUtil.hs [1 of 1] Compiling Main ( ListUtil.hs, interpreted ) Ok, modules loaded: Main. *Main> *Main> processInfo ["Hari", "Krishna", "PTR", "Nayan", "Rama", "Gopi", "Sudheer"] [(3,["PTR"]),(4,["Hari","Rama","Gopi"]),(5,["Nayan"]),(7,["Krishna","Sudheer"])] *Main>
Rerun ListUtil.hs by
removing the keyword ‘the’, you will get following output.
*Main> processInfo ["Hari", "Krishna", "PTR", "Nayan", "Rama", "Gopi", "Sudheer"] [([3],["PTR"]),([4,4,4],["Hari","Rama","Gopi"]),([5],["Nayan"]),([7,7],["Krishna","Sudheer"])]
‘the’ function to change
the type of length of names from a list to its original numeric type.
*Main> :t the the :: Eq a => [a] -> a *Main> *Main> the [1, 1, 1] 1 *Main> the ["abc", "abc", "abc"] "abc"
No comments:
Post a Comment