packages feed

haskell-tools-builtin-refactorings-1.0.0.0: examples/Expr/GeneralizedListComp.hs

{-# LANGUAGE ParallelListComp, 
             TransformListComp,
             MonadComprehensions,
             RecordWildCards #-}
module Expr.GeneralizedListComp where

import GHC.Exts
import qualified Data.Map as M
import Data.Ord (comparing)

data Character = Character
  { firstName :: String
  , lastName :: String
  , birthYear :: Int
  } deriving (Show, Eq)

friends :: [Character]
friends = [ Character "Phoebe" "Buffay" 1963
          , Character "Chandler" "Bing" 1969
          , Character "Rachel" "Green" 1969
          , Character "Joey" "Tribbiani" 1967
          , Character "Monica" "Geller" 1964
          , Character "Ross" "Geller" 1966
          ]
          
oldest :: Int -> [Character] -> [String]
oldest k tbl = [ firstName ++ " " ++ lastName
               | Character{..} <- tbl
               , then sortWith by birthYear
               , then take k
               ]