static assert (is ( Zip!( Pack!( 0, 1, 2 ), Pack!( 'a','b','c' ), ) == Cons!( Pack!( 0, 'a' ), Pack!( 1, 'b' ), Pack!( 2, 'c' ) ) )); // Map and Filter automatically unpack Packs before passing them through to predicates enum Binary (T,U) = T.stringof ~ U.stringof; static assert ( Map!(Binary, Zip!( Pack!( int, string, char ), Pack!( string, int, char ), )) == Cons!( `intstring`, `stringint`, `charchar` ) ); enum binary (T,U) = is (T == U); static assert (is ( Filter!(binary, Zip!( Pack!( int, string, char ), Pack!( int, string, bool ), ) ) == Cons!( Pack!(int, int), Pack!(string, string) ) ));
from a list of n packs of length m, produce a list of m packs of length n