コード例 #1
0
 public static StateEither <ParserState <T>, string, T> Peek()
 {
     return
         (from i in Index.GetS().ToStateEither <ParserState <T>, string, uint>()
          from data in Data.GetS().ToStateEither <ParserState <T>, string, T[]>()
          from @byte in i >= data.Length
             ? "Unexpected end of input sequence".InsertLeft <ParserState <T>, string, T>()
             : data[i].InsertRight <ParserState <T>, string, T>()
          select @byte);
 }
コード例 #2
0
        public void LensReadTest()
        {
            var nameAndPosition = from name in TurtleName.GetS()
                                  from x in TurtleX.GetS()
                                  from y in TurtleY.GetS()
                                  select Tuple.Create(name, x, y);

            var turtle1 = new Turtle("bob", new Position(x: 10, y: -2));

            var result = nameAndPosition.Eval(turtle1);

            Console.WriteLine(result);

            Assert.AreEqual("bob", result.Item1);
            Assert.AreEqual(10, result.Item2);
            Assert.AreEqual(-2, result.Item3);
        }