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); }
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); }