This is a module used by the guard-based auditing proposal, though it can stand alone.
CoercedSlots implement the Slot protocol.
run(guard, specimen, ejector) :CoercedSlot
Makes a CoercedSlot holding the result of guard.coerce(specimen, ejector).
attempt(guard, value) :CoercedSlot
As run/1 unless the guard ejects, in which case the resulting slot's guard will be LostApproval[guard].
- Signature: getGuard() :Guard
Returns the guard that this slot's value was coerced, or otherwise approved, by.