reduce-plural := λ(: pts List). (: ( (let r (: LEOF List)) (while (non-zero pts) (match pts ( () ( (LCons( try tlt )) ( (set pts tlt) (for-each (tst in tlt) ( (if (non-zero try) ( (if (can-unify( (domain try) (domain tst) )) ( (set try TAny) ) ()) ) ()) )) (if (non-zero try) ( (set r (cons( try r ))) ) ()) )) ))) (set pts r) (set r (: LEOF List)) (while (non-zero pts) (match pts ( () ( (LCons( try tlt )) ( (set pts tlt) (for-each (tst in tlt) ( (if (non-zero try) ( (if (can-unify( (domain try) (domain tst) )) ( (set try TAny) ) ()) ) ()) )) (if (non-zero try) ( (set r (cons( try r ))) ) ()) )) ))) r ) List);