USING: ; IN: phrases : (number-of-branches) ( seq -- seq ) length >array [ 1+ ] map ; : just-alpha ( seq -- seq ) " " split [ [ alpha? ] filter ] map ; : trim-empty ( seq -- seq ) [ "" = ] trim ; : possible-phrases ( sentence -- words-seq ) just-alpha trim-empty [ (number-of-branches) ] [ ] bi '[ _ swap clump [ " " join ] map ] map ;