Zip

from a list of n packs of length m, produce a list of m packs of length n

Members

Aliases

Zip
alias Zip = Map!(ToPack, Iota!length)
Undocumented in source.

Enums

CheckLength
eponymoustemplate CheckLength(uint i)
Undocumented in source.

Manifest constants

length
enum length;
Undocumented in source.
n
enum n;
Undocumented in source.

Templates

ToPack
template ToPack(uint i)
Undocumented in source.

Examples

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)
    )
));

Meta