Exemplo n.º 1
0
 public Many1CharsTill(FSharpFunc <CharStream <TUserState>, Reply <char> > charParser1,
                       FSharpFunc <CharStream <TUserState>, Reply <char> > charParser,
                       FSharpFunc <CharStream <TUserState>, Reply <TEnd> > endParser,
                       FSharpFunc <string, FSharpFunc <TEnd, TResult> > mapping)
 {
     CharParser1 = charParser1;
     CharParser  = charParser;
     EndParser   = endParser;
     Mapping     = (OptimizedClosures.FSharpFunc <string, TEnd, TResult>)(object) OptimizedClosures.FSharpFunc <string, TEnd, TResult> .Adapt(mapping);
 }
Exemplo n.º 2
0
 internal Operator(string leftString,
                   FSharpFunc <CharStream <TUserState>, Reply <TAfterString> > afterLeftStringParser,
                   string rightString,
                   FSharpFunc <CharStream <TUserState>, Reply <TAfterString> > afterRightStringParser,
                   int precedence,
                   Associativity associativity,
                   FSharpFunc <TAfterString, FSharpFunc <TAfterString, FSharpFunc <TTerm, FSharpFunc <TTerm, FSharpFunc <TTerm, TTerm> > > > > mapping)
 {
     Type = OperatorType.Infix;
     if (string.IsNullOrEmpty(leftString))
     {
         throw new ArgumentException("leftString", "The operator strings must not be empty.");
     }
     String = leftString;
     if (afterLeftStringParser == null)
     {
         throw new ArgumentNullException("afterLeftStringParser");
     }
     AfterStringParser = afterLeftStringParser;
     if (string.IsNullOrEmpty(rightString))
     {
         throw new ArgumentException("rightString", "The operator strings must not be empty.");
     }
     TernaryRightString = rightString;
     if (afterRightStringParser == null)
     {
         throw new ArgumentNullException("afterRightStringParser");
     }
     AfterTernaryRightStringParser = afterRightStringParser;
     if (precedence < 1)
     {
         throw new ArgumentOutOfRangeException("precedence", "The operator precedence must be greater than 0.");
     }
     Precedence = precedence;
     if (associativity < Associativity.None || associativity > Associativity.Right)
     {
         throw new ArgumentOutOfRangeException("associativity", "The associativity argument is invalid.");
     }
     Associativity = associativity;
     if (mapping == null)
     {
         throw new ArgumentNullException("mapping");
     }
     Mapping3 = OptimizedClosures.FSharpFunc <TAfterString, TAfterString, TTerm, TTerm, TTerm, TTerm> .Adapt(mapping);
 }
Exemplo n.º 3
0
        public Move FindBestMove(Game game)
        {
            FSharpFunc <Game, bool> gameOver = FuncConvert.FromFunc <Game, bool>(GameOver);
            FSharpFunc <Game, FSharpFunc <Player, int> > heuristic = FuncConvert.FromFunc <Game, Player, int>(Heuristic);
            FSharpFunc <Game, Player> getTurn = FuncConvert.FromFunc <Game, Player>(GetTurn);
            FSharpFunc <Game, IEnumerable <Move> >      moveGenerator = FuncConvert.FromFunc <Game, IEnumerable <Move> >(MoveGenerator);
            FSharpFunc <Game, FSharpFunc <Move, Game> > applyMove     = FuncConvert.FromFunc <Game, Move, Game>(ApplyMove);

            OptimizedClosures.FSharpFunc <int, int, Game, Player, Tuple <FSharpOption <Move>, int> > mini =
                (OptimizedClosures.FSharpFunc <int, int, Game, Player, Tuple <FSharpOption <Move>, int> >)GameTheory.MiniMaxWithAlphaBetaPruningGenerator(heuristic,
                                                                                                                                                          getTurn, gameOver, moveGenerator, applyMove);

            NodeCounter.Reset();
            Tuple <FSharpOption <Move>, int> best = mini.Invoke(int.MinValue, int.MaxValue, game, game.Turn);
            Move move = best.Item1.Value;

            return(move);
        }
Exemplo n.º 4
0
 public NoAfterStringTernaryMappingAdapter(OptimizedClosures.FSharpFunc <TTerm, TTerm, TTerm, TTerm> mapping)
 {
     Mapping = mapping;
 }