Inline definitions in interfaces ================================ There are two use cases where definitions can be fully "exposed" in the module interface: 1. Function bodies that are inlined 2. Constants Both allow optimizations to be made. Exposed constants also allow the data item to be used as a constant value (e.g. in array lengths). (For constants, it could be emulated with enum constants.) Problem: - What should happen if the constant value or function body changes? - Should changes be allowed at all? Solutions --------- Alt. 1: Simply forbid modification (without a version change) - Least surprises - Other languages already use lockfiles that lock the implementation - Changes must be versioned.