コード例 #1
0
ファイル: RoseTree.cs プロジェクト: ploeh/ChurchEncoding
 public static TResult Cata <N, L, TResult>(
     this IRoseTree <N, L> tree,
     Func <N, IEnumerable <TResult>, TResult> node,
     Func <L, TResult> leaf)
 {
     return(tree.Accept(new CataVisitor <N, L, TResult>(node, leaf)));
 }
コード例 #2
0
ファイル: RoseTreeTests.cs プロジェクト: ploeh/ChurchEncoding
        public void MatchNode()
        {
            IRoseTree <string, int> tree =
                RoseTree.Node("foo",
                              new RoseLeaf <string, int>(42),
                              new RoseLeaf <string, int>(1337));
            int actual = tree.Accept(new MatchStringNodeVisitor());

            Assert.Equal(3, actual);
        }
コード例 #3
0
ファイル: RoseTree.cs プロジェクト: ploeh/ChurchEncoding
 public static IChurchBoolean IsLeaf <N, L>(this IRoseTree <N, L> source)
 {
     return(source.Accept(new IsLeafVisitor <N, L>()));
 }