     name>> % " [ dup ] " %
     " | " %
     %  
-    " ]" %     
+    " nip ]" %     
   ] "" make ;
 
 M: object build-locals ( code ast -- )

        ] 2each
        " | " %
        %  
        " ]" %     
    ] "" make 
  ] if ;


  dup infer {
    { [ dup (( a -- b )) effect<= ] [ drop ] }
    { [ dup (( -- b )) effect<= ] [ drop [ drop ] prepose ] }
    [
      [ 
        "Bad effect: " write effect>string write 
        " for quotation " write pprint
      ] with-string-writer throw
    ]
  } cond ;
 
M: ebnf-action (transform) ( ast -- parser )
