Sealing - Spicery/Nutmeg GitHub Wiki

In Nutmeg, every built-in mutable type implements the sealObject method, which modifies the object so that it no longer allow modification. By default, locking is a one-way operation. It is also an opportunity to optimize the object for store.

sealObject{ optimize=LEVEL:number }( OBJECT )

When an object is sealed, if its related objects are all const (fully immutable), then the locked-object will count as const as well.

If the coder believes that optimization is likely to be worth it, they can set a hint to encourage the class to make that optimization, which is an number indicating the order of magnitude that the algorithm should fall below to make this a practical tradeoff. 0 and 1 are intended to be the common options.

Level Meaning
0 Optimization should have a fixed cost
1 Optimization of O(N) would be OK
2 Optimization of O(N2) would be OK
k Optimization of O(Nk) would be OK
Make the optimisation unconditionally
⚠️ **GitHub.com Fallback** ⚠️