Power set: Difference between revisions

Factor implementation
(Factor implementation)
Line 516:
let subsets xs = List.foldBack (fun x rest -> rest @ List.map (fun ys -> x::ys) rest) xs [[]]
</lang>
=={{header|Factor}}==
We use hash sets, denoted by <code>HS{ }</code> brackets, for our sets. <code>members</code> converts from a set to a sequence, and <code><hash-set></code> converts back.
<lang factor>USING: sets
: add ( set elt -- newset ) 1array <hash-set> union ;
: powerset ( set -- newset ) members { HS{ } } [ dupd [ add ] curry map append ] reduce <hash-set> ;</lang>
Usage:
<lang factor>( scratchpad ) HS{ 1 2 3 4 } powerset .
HS{
HS{ 1 2 3 4 }
HS{ 1 2 }
HS{ 1 3 }
HS{ 2 3 }
HS{ 1 2 3 }
HS{ 1 4 }
HS{ 2 4 }
HS{ }
HS{ 1 }
HS{ 2 }
HS{ 3 }
HS{ 4 }
HS{ 1 2 4 }
HS{ 3 4 }
HS{ 1 3 4 }
HS{ 2 3 4 }
}</lang>
 
=={{header|Forth}}==
{{works with|4tH|3.61.0}}.
Line 547 ⟶ 573:
( 1 2 3 4 )
</pre>
 
=={{header|GAP}}==
<lang gap># Built-in
99

edits