apply-plural := λ(: function-name String)(: ft Type)(: pt Type)(: do-specialize U8)(: blame AST). (: ( (let r (: LEOF List)) (match ft ( () ( (TAnd( t1 t2 )) ( (set r (+( (apply-plural( function-name t1 pt do-specialize blame )) (apply-plural( function-name t2 pt do-specialize blame )) ))) )) ( (TGround( 'Arrow_s (LCons( frt (LCons( fpt LEOF )) )) )) ( (if (can-unify( fpt pt )) ( (set r (cons( ft r ))) ) ()) )) ( _ () ) )) r ) List);