{- maximum value problem -} data MVal = MVal { mval :: Int } deriving (Eq, Show) gmaxv g = let step v = let newval = maximum [ val u | u <- g ] in MVal newval in gmap step g