Signal a Condition and allow handlers to bind Restart.
This predicate is the mechanism
by which code indicates that it doesn't know how to
proceed and is requesting assistance in choosing a path forward.
It's possible for ancestors to disagree about Restart (aka,
different values on backtracking). In this scenario, it's acceptable
to choose the first (innermost) Restart, iterate each Restart in turn or
consider all Restart values together (quorum?).
If no ancestor has an opinion, signal/2 calls
If you'd rather use a default value for Restart in this case,
use signal/3 instead.
It's quite common for signal/2 to leave dangling,
choicepoints. If you're only interested in the first Restart value,
use once/1 or a similar construct to explicitly state that intent.