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

    name>> % " [ dup ] " %
    " | " %
    %  
    " ]" %     
  ] "" make ;

M: object build-locals ( code ast -- )

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

