コード例 #1
0
    static Func <A, B> Y <A, B>(Func <Func <A, B>, Func <A, B> > f)
    {
        var r = new RecursiveFunc <Func <A, B> > {
            o = w => f(_0 => w.o(w)(_0))
        };

        return(r.o(r));
    }
コード例 #2
0
    static System.Func <A, B> Y <A, B>(System.Func <System.Func <A, B>, System.Func <A, B> > f)
    {
        var r = new RecursiveFunc <System.Func <A, B> >()
        {
            o = new System.Func <RecursiveFunc <System.Func <A, B> >, System.Func <A, B> >((RecursiveFunc <System.Func <A, B> > w) => {
                return(f(new System.Func <A, B>((A x) => {
                    return w.o(w)(x);
                })));
            })
        };

        return(r.o(r));
    }
コード例 #3
0
 static Func<A, B> Y<A, B>(Func<Func<A, B>, Func<A, B>> f) {
     var r = new RecursiveFunc<Func<A, B>> {
         o = w => f(x => w.o(w)(x))
     };
     return r.o(r);
 }