     ] [
       m
     ] if
-  ] ;
+  ] ; inline
 
 :: apply-non-memo-rule ( r p -- ast )
   [let* |

    ] [
      m ans>> seed>>
    ] if
  ] ;

:: recall ( r p -- memo-entry )
  [let* |

    m (>>ans)
    pos get m (>>pos)
    r p m h (grow-lr)
  ] if ; inline
 
:: grow-lr ( r p m h -- ast )
  h p heads get set-at
  r p m h (grow-lr) 
  p heads get delete-at
  m pos>> pos set m ans>>
  ; inline

:: (setup-lr) ( r l s -- )
  s head>> l head>> eq? [
