public void ParseSumArray() { var context = Parse( "let sum [] = 0;\r\n" + "let sum (x:xs) = add x (sum xs);\r\n" ); var sum = context["sum"]; var array = ScriptingValue.CreateArray(1, 2, 3, 4, 5); var result = sum.Invoke(array); Assert.AreEqual(15, (int)result.Value); }
public void ParseCountArray() { var context = Parse( "let count [] = 0;\r\n" + "let count (x:xs) = add 1 (count xs);\r\n" + "let main = count [1,2.2,\"3\",true,false];\r\n" ); var count = context["count"]; var array = ScriptingValue.CreateArray(1, 2, 3, 4, 5); var result = count.Invoke(array); Assert.AreEqual(5, (int)result.Value); Assert.AreEqual(5, context["main"].Value); }
public void ParseSumTree() { var context = Parse( "let sum ['leaf, n] = n;\r\n" + "let sum ['tree, m, n] = add (m :> sum) (sum n);\r\n" ); var sum = context["sum"]; var tree = ScriptingValue.CreateArray( new Flag("tree"), ScriptingValue.CreateArray( new Flag("tree"), ScriptingValue.CreateArray( new Flag("leaf"), 1 ), ScriptingValue.CreateArray( new Flag("leaf"), 2 ) ), ScriptingValue.CreateArray( new Flag("tree"), ScriptingValue.CreateArray( new Flag("leaf"), 3 ), ScriptingValue.CreateArray( new Flag("leaf"), 4 ) ) ); var result = sum.Invoke(tree); Assert.AreEqual(10, (int)result.Value); }