不動点演算子といってラムダ計算やらコンビネータ理論やらのものらしいです。 ちゃんと調べてないのでよくわかってません(笑) ただ、これを使うと無名関数を再帰することができる、ということです。 で自分で実装して考えてみる。 まずは再帰のお供、fact関数。 (defun fact (n) (if (<= n 1) 1 (* n (fact (- n 1))))) 末尾再帰にもなっていませんがとりあえず実装。 ここから進めていきましょう。 この関数をlambda関数にした場合、何が使えなくて再帰できないのか? そう、関数名fact、というか関数自身です。 んじゃどうすればいける?と考えると・・・ないものは無いんで外部から差し込むしかないよなーということになります。 つまり自分自身を引数として受け取って(なんか話が矛盾してきた!(笑))それをfuncallすれば再帰できるはず、ということで定義した