예제 #1
0
파일: FuncyList.cs 프로젝트: forki/Funcy
        public static FuncyList <T> Take <T>(this FuncyList <T> source, int count)
        {
            if (source.IsNil || count <= 0)
            {
                return(FuncyList <T> .Nil());
            }

            return(FuncyList <T> .Construct(((IEnumerable <T>)source).Take <T>(count).ToArray()));
        }
예제 #2
0
파일: FuncyList.cs 프로젝트: forki/Funcy
 public FuncyList <TReturn> Apply <TReturn>(FuncyList <Func <T, TReturn> > f)
 {
     if (f.IsCons)
     {
         return(FuncyList <TReturn> .Construct(f.ToList().SelectMany(fCons => this.FMap(fCons)).ToArray()));
     }
     else
     {
         return(FuncyList <TReturn> .Nil());
     }
 }
예제 #3
0
파일: FuncyList.cs 프로젝트: forki/Funcy
 public static Maybe <T> First <T>(this FuncyList <T> source)
 {
     if (source.IsNil)
     {
         return(Maybe <T> .None());
     }
     else
     {
         return(Maybe <T> .Some(source.ToCons().Head));
     }
 }
예제 #4
0
파일: FuncyList.cs 프로젝트: forki/Funcy
 public static Maybe <T> Last <T>(this FuncyList <T> source)
 {
     if (source.IsNil)
     {
         return(Maybe <T> .None());
     }
     else
     {
         return(Maybe <T> .Some(((IEnumerable <T>)source).Last()));
     }
 }
예제 #5
0
파일: FuncyList.cs 프로젝트: forki/Funcy
        public static FuncyList <T> Construct(params T[] args)
        {
            FuncyList <T> result = FuncyList <T> .Nil();

            for (int i = args.Length - 1; i >= 0; i--)
            {
                result = FuncyList <T> .Cons(args[i], result);
            }

            return(result);
        }
예제 #6
0
파일: FuncyList.cs 프로젝트: forki/Funcy
        public static Maybe <T> ElementAt <T>(this FuncyList <T> source, int index)
        {
            if (source is Nil <T> )
            {
                return(Maybe <T> .None());
            }

            if (index < 0)
            {
                return(Maybe <T> .None());
            }

            if (index >= source.Count())
            {
                return(Maybe <T> .None());
            }

            return(Maybe <T> .Some(((IEnumerable <T>)source).ElementAt(index)));
        }
예제 #7
0
파일: NonEmptyList.cs 프로젝트: forki/Funcy
 public static FuncyList <T> ToFuncyList <T>(this NonEmptyList <T> self)
 {
     return(FuncyList <T> .Construct(self.ToArray()));
 }
예제 #8
0
파일: FuncyList.cs 프로젝트: forki/Funcy
 public override FuncyList <TReturn> ComputeWith <TReturn>(Func <T, FuncyList <TReturn> > f)
 {
     return(FuncyList <TReturn> .Nil());
 }
예제 #9
0
파일: FuncyList.cs 프로젝트: forki/Funcy
 public override FuncyList <TReturn> FMap <TReturn>(Func <T, TReturn> f)
 {
     return(FuncyList <TReturn> .Nil());
 }
예제 #10
0
파일: FuncyList.cs 프로젝트: forki/Funcy
 public override FuncyList <TReturn> ComputeWith <TReturn>(Func <T, FuncyList <TReturn> > f)
 {
     return(FuncyList <TReturn> .Construct(this.SelectMany(h => f(h)).ToArray()));
 }
예제 #11
0
파일: FuncyList.cs 프로젝트: forki/Funcy
 public override FuncyList <TReturn> FMap <TReturn>(Func <T, TReturn> f)
 {
     return(FuncyList <TReturn> .Cons(f(this.head), this.tail.FMap(f)));
 }
예제 #12
0
파일: FuncyList.cs 프로젝트: forki/Funcy
 public Cons(T head, FuncyList <T> tail)
 {
     this.head = head;
     this.tail = tail;
 }
예제 #13
0
파일: FuncyList.cs 프로젝트: forki/Funcy
 public static FuncyList <T> Cons(T head, FuncyList <T> tail)
 {
     return(new Cons <T>(head, tail));
 }
예제 #14
0
파일: FuncyList.cs 프로젝트: forki/Funcy
 public FuncyList <T> Point(T value)
 {
     return(FuncyList <T> .Construct(value));
 }
예제 #15
0
파일: FuncyList.cs 프로젝트: forki/Funcy
 public FuncyList <TReturn> ApplyRight <TReturn>(FuncyList <TReturn> other)
 {
     return(other);
 }
예제 #16
0
파일: FuncyList.cs 프로젝트: forki/Funcy
 public FuncyList <T> ApplyLeft <TReturn>(FuncyList <TReturn> other)
 {
     return(this);
 }