At ShapeContract construction time; we can know every param that appears in the contract; and could put them in a sorted list.
That list could be a slot map, and the binding structure for solved values could then just be stack array of size equal to the slot size.