예제 #1
0
        static void AppendExample()
        {
            var a = HList.Nil().Extend(true).Extend(3).Extend("Foo");
            var b = HList.Nil().Extend(new [] { 1, 2 }).Extend("Bar").Extend(4.0);

            var zero = HAppend.Append <HCons <double, HCons <string, HCons <int[], HNil> > > >();
            var one  = HAppend.Append <bool, HNil,
                                       HCons <double, HCons <string, HCons <int[], HNil> > >,
                                       HCons <double, HCons <string, HCons <int[], HNil> > >,
                                       HAppend <HNil, HCons <double, HCons <string, HCons <int[], HNil> > >, HCons <double, HCons <string, HCons <int[], HNil> > > > >(zero);
            var two = HAppend.Append <int,
                                      HCons <bool, HNil>,
                                      HCons <double, HCons <string, HCons <int[], HNil> > >,
                                      HCons <bool, HCons <double, HCons <string, HCons <int[], HNil> > > >,
                                      HAppend <HCons <bool, HNil>,
                                               HCons <double, HCons <string, HCons <int[], HNil> > >,
                                               HCons <bool, HCons <double, HCons <string, HCons <int[], HNil> > > > > >(one);
            var three = HAppend.Append <string,
                                        HCons <int, HCons <bool, HNil> >,
                                        HCons <double, HCons <string, HCons <int[], HNil> > >,
                                        HCons <int, HCons <bool, HCons <double, HCons <string, HCons <int[], HNil> > > > >,
                                        HAppend <HCons <int, HCons <bool, HNil> >,
                                                 HCons <double, HCons <string, HCons <int[], HNil> > >,
                                                 HCons <int, HCons <bool, HCons <double, HCons <string, HCons <int[], HNil> > > > > > >(two);

            var x = three.Append(a, b);

            Console.WriteLine(x.Head);
            Console.WriteLine(x.Tail.Tail.Tail.Tail.Head);
        }