showFlowRate :: Rate -> String
showFlowRate Rate {pushRate=a, popRate=b, peekRate=c} =
  intercalate " " $ zipWith showf ["push","pop","peek"] [a,b,c]
    where
      showf tag rate = case rate of
        Const 0 -> ""
        _       -> tag ++ " " ++ show rate
showFlowRate :: Rate -> String
showFlowRate Rate {pushRate=a, popRate=b, peekRate=c} =
  intercalate " " $ zipWith showf ["push","pop","peek"] [a,b,c]
    where
      showf tag rate = case rate of
        Const 0 -> ""
        _       -> tag ++ " " ++ show rate
showFlowRate Rate {pushRate=a, popRate=b, peekRate=c} =
  intercalate " " $ zipWith showf ["push","pop","peek"] [a,b,c]
    where
      showf tag rate = case rate of
        Const 0 -> ""
        _       -> tag ++ " " ++ show rate