localfunction L(f,n)if n<=1thenreturn f
elsereturnfunction(a)return L(function(...)return f(a,...)end, n-1)endendend
Такая функция работает при значениях n>=1, но не работает с n=0
f = L(print,2)
f(1)(2)-- печатает: 1 2
f = L(print,0)
f()-- выдает функцию print
Вопрос:
Нужна функция L, которая принимает в параметр функцию f и дополнительно n аргументов - стандартных значений, которые так же будут показывать количество аргументов.
localfunction L(f,...)-- ???end-- Функция для примера - просто выводит три своих параметраlocalfunction abc(a, b, c)return'"a:'..tostring(a)..' b:'..tostring(b)..' c:'..tostring(c)..'"'endlocal f = L(abc,'a','b',nil)-- Создаем λ-функцию с тремя значениями по умолчанию-- Должно выводить:
print( f(1)(2)(3))-- "a:1 b:2 c:3"
print( f()()())-- "a:a b:b c:nil"
print( f(nil,2)())-- "a:a b:2 c:nil"
Я пишу свой интерпретатор на Lua для роботов. Мне потребовалось использовать лямбда-вычисления.
Задача - написать функцию L, где L(f, n) выдавало бы функцию Ln(a1)(a2)(...)(an) которая при выполнении выдает f(a1, a2, ..., an).
@ProgramCrafter подсказал написать так:
Такая функция работает при значениях n>=1, но не работает с n=0
Вопрос:
Нужна функция L, которая принимает в параметр функцию f и дополнительно n аргументов - стандартных значений, которые так же будут показывать количество аргументов.
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах