process :: Object -> Simulation Object
process o = do
  if isFood o
    then return o
    else do (_, d) <- ask
            return $ o & (position +~ ((d,d) * (o ^. velocity)))
                       & (energy   -~ (d     * (o ^. metabolism)))
process :: Object -> Simulation Object
process o = do
  if isFood o
    then return o
    else do (_, d) <- ask
            return $ o & (position +~ ((d,d) * (o ^. velocity)))
                       & (energy   -~ (d     * (o ^. metabolism)))
process o = do
  if isFood o
    then return o
    else do (_, d) <- ask
            return $ o & (position +~ ((d,d) * (o ^. velocity)))
                       & (energy   -~ (d     * (o ^. metabolism)))