In addition to normally addressed memories, we should support CAMs (content addressable memories) as primitives.
These need to, instead of returning a value, return a struct (essentially an Option type) since the value may not be in the CAM when reading. So we need to add structs too to support these haha.