=========
Summary
=========

---------
Summary
---------

* :ada:`procedure` is abstraction for actions
* :ada:`function` is abstraction for value computations
* Separate declarations are sometimes necessary

   - Mutual recursion
   - Visibility from packages (i.e., exporting)

* Modes allow spec to define effects on actuals

   - Don't have to see the implementation: abstraction maintained

* Parameter-passing mechanism is based on the type
* Watch those side effects!
