   #! Return the index from the original string that the
   #! input slice is based on.
   dup slice? [ slice-from ] [ drop 0 ] if ;
-
-: input-cache ( parser -- cache )
-  #! From the packrat cache, obtain the cache for the parser 
-  #! that maps the position to the parser result.
-  id>> packrat get [ drop H{ } clone ] cache ;
 
 : process-rule-result ( p result -- result )
   [

  
SYMBOL: ignore 

SYMBOL: packrat
SYMBOL: pos
SYMBOL: input
SYMBOL: fail
SYMBOL: lrstack
SYMBOL: heads

: failed? ( obj -- ? )
  fail = ;

:: recall ( r p -- memo-entry )
  [let* |
          m [ p r memo ]
          h [ p heads at ]
        |
    h [
      m r h involved-set>> h rule>> suffix member? not and [
        fail p memo-entry boa
      ] [
        r h eval-set>> member? [
          h [ r swap remove ] change-eval-set drop
