Lua はファーストクラスの関数をサポートしているので、多くの関数型言語のように演算子を desugar できるかどうか知りたいです。たとえば、OCaml では次のことができます。
let x = (+) 3 5
上記のコードx
は、値で変数を初期化します3 + 5
。書き込み(+)
は、2 つのパラメーターを取り、それらの合計を返すローカル関数を持つことと同じです。と の 2 つの引数を(+) 3 5
指定してこの関数を呼び出しています。これの背後にある動機は、前に関数でラップすることなく、演算子を関数に直接渡すことができることです。3
5
local t = {"ab", "d", "c" }
local function op_greaterthan (a,b) return a>b end
table.sort (t, op_greaterthan) --would like to write: table.sort (t, (>))
ありがとう!