private static IEnumerable <IExampleSpace <T> > TraverseUnencountered <TAccumulator, T>(
                IEnumerable <TAccumulator> accumulators,
                ImmutableHashSet <ExampleId> encounteredIds,
                Func <TAccumulator, ImmutableHashSet <ExampleId>, IExampleSpace <T> > nextExampleSpace)
            {
                return(accumulators
                       .Scan(
                           new UnfoldSubspaceState <T>(
                               new Option.None <IExampleSpace <T> >(),
                               encounteredIds),
                           (acc, curr) =>
                {
                    var exampleSpace = nextExampleSpace(curr, acc.Encountered);

                    var hasBeenEncountered = acc.Encountered.Contains(exampleSpace.Current.Id);
                    if (hasBeenEncountered)
                    {
                        return new UnfoldSubspaceState <T>(
                            new Option.None <IExampleSpace <T> >(),
                            acc.Encountered);
                    }

                    return new UnfoldSubspaceState <T>(
                        new Option.Some <IExampleSpace <T> >(exampleSpace),
                        acc.Encountered.Add(exampleSpace.Current.Id));
                }
                           )
                       .Select(x => x.UnencounteredExampleSpace switch
                {
                    Option.Some <IExampleSpace <T> > some => some.Value,
                    _ => null
                })
예제 #2
0
            private static IEnumerable <IExampleSpace <ContextualValue <T, TContext> > > TraverseUnencountered <TAccumulator, TContext, T>(
                IEnumerable <TAccumulator> accumulators,
                TContext context,
                NextContextFunc <T, TContext> nextContext,
                Func <TAccumulator, TContext, IExampleSpace <ContextualValue <T, TContext> > > nextExampleSpace)
            {
                return(accumulators
                       .Scan(
                           new UnfoldSubspaceState <T, TContext>(
                               new Option.None <IExampleSpace <ContextualValue <T, TContext> > >(),
                               context),
                           (acc, curr) =>
                {
                    var exampleSpace = nextExampleSpace(curr, acc.Context);

                    var context0 = nextContext(exampleSpace.Current.Value.Value, acc.Context);

                    return new UnfoldSubspaceState <T, TContext>(
                        new Option.Some <IExampleSpace <ContextualValue <T, TContext> > >(exampleSpace),
                        context0);
                }
                           )
                       .Select(x => x.UnencounteredExampleSpace switch
                {
                    Option.Some <IExampleSpace <ContextualValue <T, TContext> > > some => some.Value,
                    _ => null
                })
예제 #3
0
 public static Option <R> Map <T, R>(this Option.Some <T> some, Func <T, R> func)
 => Some(func(some.Value));
예제 #4
0
 new Trade(TestMarket, TestStrategy, TestLevels, TestOpen, Option.Some(TestClose), (Option.Some(6020.00), Option.Some(5930.00)), EntryOrderType.Limit)