Ejemplo n.º 1
0
 public Generator(ImmList <T> back, IEnumerable <T> generator, IEnumerator <T> state, bool isEager)
 {
     Back       = back;
     _generator = generator;
     _state     = state;
     IsEager    = isEager;
 }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            ImmList <string> names = new[] {
                "Bob", "Frank", "Joe", "Steve", "Allen", "Greg", "Mike", "Joey", "Jill", "Marcus", "Alex"
            }.ToImmList();


            string[] names2 = new[] {
                "Bob", "Alex", "Jill", "Fred", "Linda"
            };

            ImmList <KeyValuePair <char, IEnumerable <string> > > namesByFirstLetter =
                from name in names
                where !name.StartsWith("M")
                let firstLetter = name[0]
                                  group name by firstLetter into namesByThisLetter
                                  orderby namesByThisLetter.Key
                                  select namesByThisLetter;

            ImmList <string> peopleInBothLists =
                from name in names
                join name2 in names2 on name equals name2
                orderby name
                select name;
        }
Ejemplo n.º 3
0
        public ImmPriorityQueue <T, TPriority> Add(T item)
        {
            var priority = Appraise(item);
            var list     = Inner.TryGet(priority);
            var newList  = list.IsSome ? list.Value.AddLast(item) : ImmList.Of(item);

            return(Wrap(Inner.Set(priority, newList)));
        }
Ejemplo n.º 4
0
 private void IterateTill(ref int index)
 {
     for (; index >= 0; index--)
     {
         if (!_state.MoveNext())
         {
             _isOver = true;
             return;
         }
         Back = Back.AddLast(_state.Current);
     }
 }
Ejemplo n.º 5
0
        static void Main(string[] args)
        {
            ImmList <int> list = ImmList.Of(0, 1, 2);

            //access to the ends:
            list = list.AddLast(3).AddFirst(-1);
            list = list.AddLastRange(new[] {
                4, 5, 6
            });
            list = list.AddFirstRange(list);
            list = list.RemoveLast().RemoveFirst();

            //indexing:
            int firstItem = list[0];

            list = list.Update(0, firstItem + 1);
            list = list.Insert(0, firstItem);

            //slices:
            ImmList <int> sublist = list[1, 3];            //slices in range [1, 3], inclusive.

            ImmSet <int> set = ImmSet.Of(0, 1, 2);

            //add and remove:
            set = set.Add(3).Remove(0);

            //set-theoretic operations:
            set = set.Union(new[] {
                5, 6
            });
            set = set.Except(new[] {
                5
            });
            set = set.Intersect(set);

            ImmMap <int, int> map = ImmMap.Of(Kvp.Of(1, 1), Kvp.Of(2, 2), Kvp.Of(3, 3));

            map = map.Add(4, 4);
            map = map.Remove(2);
            int value = map[1];
        }
Ejemplo n.º 6
0
 private Generator New(
     ImmList <T> back = null, IEnumerable <T> generator = null, IEnumerator <T> state = null, bool?isEager = null)
 {
     return(new Generator(back ?? Back, generator ?? _generator, state ?? _state, isEager ?? IsEager));
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="T:System.Object"/> class.
 /// </summary>
 private ImmLazyList(ImmList <Block> inner)
 {
     _inner = inner;
 }
Ejemplo n.º 8
0
 public Evaluated(ImmList <T> inner)
 {
     _inner = inner;
 }