def BUCKETS: size = 1 << 17; type hashmap = [BUCKETS][](size, data); fn getitem(map: *hashmap, hash: size) data = { let bucket = &map[hash & (BUCKETS - 1)]; for (let i = 0z; i < len(bucket); i += 1) { if (bucket[i].0 == hash) return bucket[i].1; }; return data { ... }; }; fn setitem(map: *hashmap, hash: size, value: data) void = { let bucket = &map[hash & (BUCKETS - 1)]; for (let i = 0z; i < len(bucket); i += 1) { if (bucket[i].0 == hash) { bucket[i].1 = value; return; }; }; append(bucket, (hash, value))!; }; fn finish(map: *hashmap) void = { for (let i = 0z; i < len(map); i += 1) free(map[i]); };