たまには Lua も書かないと忘れてしまいそうなので,久しぶりに Lua を書いてみた. お題は,最近の日記でも扱った,不動点コンビネータ. 散々既出だろうし,新規性は全くないけど,まぁ個人の blog だし その辺りは勘弁してください,ってことで. さて,知らない人のために説明すると,不動点コンビネータとは, function fix(f) -- 実装 end local fact = fix( function( fact, x ) return x > 1 and x * fact(x-1) or 1 end ) って感じで,ラムダ式で再帰を書けるようにする,ちょっと不思議な関数 fix のこと. 勿論,これは local function を使って local function fact(x) return x > 1 and x * fact(x-1) or 1 end と書けば