suggest either making promises a disjoint type or making them
indistinguishable from ordinary values, which would mean implicit
forcing and probably a Haskell-like kernel for Scheme.
IMO the second option would be extremely destructive to the Scheme
effort: all existing Schemes would have to be not just modified but
discarded. The first option is feasible and indeed desirable.
+1 to a reliable `promise?` predicate.
Implicit forcing makes it harder to reason about efficiency. That goes
against one of the core values of Scheme. (IMHO one of the most
important values.)