pub fn index_data(&mut self, data: Data) -> usize {
        match self.constants.iter().position(|d| d == &data) {
            Some(d) => d,
            None => {
                self.constants.push(data);
                self.constants.len() - 1
            }
        }
    }
Given some data, this function adds it to the constants table,
and returns the data's index.
The constants table is push only, so constants are identified by their
index. The resulting usize can be split up into a number byte
stream, and be inserted into the bytecode.
passerine-common/src/lambda.rs