export function combinations ( str ) { let fn = function ( active , rest , a ) { if ( ! active && ! rest ) return undefined ; if ( ! rest ) { a . push ( active ) ; } else { fn ( active + rest [ 0 ] , rest . slice ( 1 ) , a ) ; fn ( active , rest . slice ( 1 ) , a ) ; } return a ; } ; return fn ( '' , str , [ ] ) ; }