fingerprint_fun

Function fingerprint_fun 

Source
pub fn fingerprint_fun(param: VarId, body: &Core) -> String
Expand description

The same, for an expression written over one bound parameter, whose number is written canonically.

This is the form every index’s key takes, and it is a separate function because the difference is not cosmetic: lambda b: b.lot and lambda c: c.lot are the same key, and Core numbers variables per definition, so two loops that index the same collection by the same key arrive here with different numbers. Fingerprinting them apart built two identical arrangements — an arrangement is memory per subscriber as well as work per event (docs/23 §23.14), so the safe direction was not free.

Only the parameter is normalised, and that is enough because an index key reads nothing else — the recogniser refuses the shape otherwise. A let bound inside one would still fingerprint by its number, which is the same conservatism one level down and has no program.