{- maximum value problem -} data MVal = MVal { mval :: Int } deriving (Eq, Show) maxv g = let init v = MVal (val v) ; step v prev curr = let newmval = prev v .^ mval `max` maximum [ prev u .^ mval | (e, u) <- is v ] in MVal newmval in fregel init step Fix g