

Y Combinators in C# - profquail
http://blogs.msdn.com/madst/archive/2007/05/11/recursive-lambda-expressions.aspx

======
diN0bot
dang. i was expecting to see which ycombinator startups were using C#...

~~~
profquail
I'm honestly a bit surprised that we don't hear more about startups that use
C#/.NET for their apps. Especially when you can download the Express editions
of Visual Studio for free (which is good enough to at least get your startup
to a demo phase, after which you'd actually have to buy it.)

Or maybe it's because more of the tech entrepreneurs are also linux types, and
are more familiar with python and Java?

~~~
johns
After which, you don't actually have to buy it for 3 years because of
BizSpark.

~~~
profquail
Yeah, that's a sweet program. I'm definitely signing up for it once I actually
get my startup incorporated...CUDA requires Visual Studio to compile your
kernels on Windows.

------
TweedHeads
Javascript can do it all:

    
    
      function fac(x){ return x==0?1:x*fac(x-1); }
      a = fac(8);
    
      or a one-liner:
    
      a = (function fac(x){ return x==0?1:x*fac(x-1); })(8);
    

Both ways spit 4320

~~~
gamache
The Y combinator allows the definition of _anonymous_ recursive functions.
These have names ("fac").

Personally, I have never found much of a reason to use the Y combinator. I
typically use the method you used in the second example; I declare a named
function within the scope of the anonymous one. I find it to be a readability
win.

~~~
tilly
You can still do a Y combinator in JavaScript. In [http://www.mail-
archive.com/boston-pm@mail.pm.org/msg02716.h...](http://www.mail-
archive.com/boston-pm@mail.pm.org/msg02716.html) I not only show how to do it,
but I show one way that someone reasonably could come up with the construct.

But I agree with you that Y combinators are not generally a good approach for
working programmers because there are clearer ways of accomplishing the same
thing. However I've heard that in some functional languages they can be very
useful as a pattern to compile language constructs to.

~~~
IsaacSchlueter
I also did something like this. It's fun to port lisp constructs to
Javascript.

<http://foohack.com/tests/ycomb.html>

------
trezor
While this is definitely good geek porn, I have to say as a C# programmer that
there might be some things which C# _can_ do but which you might want to
abstain from :)

