横道にそれて、たびたびたびYコンビネータ

引数の数は1つだと不便。でもまた理解がちょっとだけ深まったかも。
しかし、速度だけ見れば、それはかなり犠牲になりそう。

<!DOCTYPE html>
<title>Test</title>

<body>
<section>
  <div>
    <table>
      <tbody>
        <tr>
          <td>
            <em id="hoge">abc</em>
      </tbody>
    </table>
  </div>
</section>



<script>

function Y (func) {
  var that = this;
  return (function (x) {
    return function (arg) {
      return func (x (x)).apply (that, arguments);
    };
  })(function (x) {
       return function (arg) {
         return func (x (x)).apply (that, arguments);
       };
     });
}


function test (self) {
  return function (n, a) {
    return (n === 0) ? a: self (n -1, a).concat (n)
  };
}

var result = Y (test)(5,["hoge"]);
alert (result); // hoge,1,2,3,4,5

function getAncestorNodeName (self) {
  return function (n, a) {
    return (n) ? self (n.parentNode, a).concat (n.nodeName): a;
  };
}

var result = Y (getAncestorNodeName)(document.getElementById('hoge'), []);
alert (result); //#document,HTML,BODY,SECTION,DIV,TABLE,TBODY,TR,TD,EM

</script>

久々に知恵袋で答えてみたら

今度は、こんなコードを上げて来た。消したスレッドに書いておいたコードの方が良かったろうに…
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1172783271
そして、「それを有料で…」って振ってきたら、取り下げるしかないだろう。
なんか、知恵袋はガッカリすることが多い。
もし有料なら、どんなコードに書く人なのだろう?