public static IEnumerable <JoinResult <Datum, Datum, Datum> > InnerJoin(DictionaryDatum left, DictionaryDatum right)
        {
            SetDatum keys = SetDatum.Intersection(left.Keys, right.Keys);

            return(keys.Select(k => new JoinResult <Datum, Datum, Datum>(k, left[k], right[k])));
        }
 public static IEnumerable <JoinResult <Datum, Option <Datum>, Nothing> > RightJoin(DictionaryDatum left, SetDatum right)
 {
     return(right.Select(k => new JoinResult <Datum, Option <Datum>, Nothing>(k, left.TryGet(k), Nothing.Value)));
 }
        public static IEnumerable <JoinResult <Datum, bool, Option <Datum> > > FullJoin(SetDatum left, DictionaryDatum right)
        {
            SetDatum keys = SetDatum.Union(left, right.Keys);

            return(keys.Select(k => new JoinResult <Datum, bool, Option <Datum> >(k, left.Contains(k), right.TryGet(k))));
        }
 public static IEnumerable <JoinResult <Datum, Nothing, Option <Datum> > > LeftJoin(SetDatum left, DictionaryDatum right)
 {
     return(left.Select(k => new JoinResult <Datum, Nothing, Option <Datum> >(k, Nothing.Value, right.TryGet(k))));
 }
 public string VisitSet(SetDatum d)
 {
     return("#s{" + string.Join(" ", d.Select(i => i.Visit(this))) + "}");
 }
Beispiel #6
0
        public static IEnumerable <JoinResult <Datum, bool, bool> > FullJoin(SetDatum left, SetDatum right)
        {
            SetDatum keys = SetDatum.Union(left, right);

            return(keys.Select(k => new JoinResult <Datum, bool, bool>(k, left.Contains(k), right.Contains(k))));
        }
Beispiel #7
0
 public static IEnumerable <JoinResult <Datum, bool, Nothing> > RightJoin(SetDatum left, SetDatum right)
 {
     return(right.Select(k => new JoinResult <Datum, bool, Nothing>(k, left.Contains(k), Nothing.Value)));
 }
Beispiel #8
0
 public static IEnumerable <JoinResult <Datum, Nothing, bool> > LeftJoin(SetDatum left, SetDatum right)
 {
     return(left.Select(k => new JoinResult <Datum, Nothing, bool>(k, Nothing.Value, right.Contains(k))));
 }