예제 #1
0
        public void ParseStateMonad()
        {
            var context = Parse(
                "let next s = create_state s (add s 1);\r\n" +
                "let main = do(state(continue))\r\n" +
                "  var a = next;\r\n" +
                "  var b = next;\r\n" +
                "  var c = return (add a b);\r\n" +
                "  return c;\r\n" +
                "end;\r\n"
                );

            Assert.AreEqual(3, context["main"].RunStateMonad(ScriptingValue.CreateValue(1)).Value);
        }
예제 #2
0
 private ScriptingValue Sub(ScriptingValue[] arguments)
 {
     return(ScriptingValue.CreateValue((int)arguments[0].Value - (int)arguments[1].Value));
 }