docs: def s_find_first(pred, first, lst):
      """Evaluate `first`; if predicate `pred` succeeds on the result of `first`,
      return the result; otherwise recur on the first element of `lst`.
  
      :param pred: a predicate.
      :param first: a promise.
      :param lst: a list of quoted promises.
      :return: the first element for which predicate is true."""
      if pred(first):
          return first
      elif lst:
          return s_find_first(pred, unquote(lst[0]), lst[1:])
      else:
          return None