Mathematica: Как реализуется OptionValue?

Реализация встроенного OptionValue содержит некоторую магию, так что

OptionValue [name ] эквивалентно OptionValue [f, name] , где f - это голова левой части правило трансформации, в котором Появляется OptionValue [name] .

Есть ли у кого-нибудь идея, как добиться чего-то подобного для Options , т.е. реализовать autoOptions [] , который разрешит к параметрам, определенным для символа в левой части правила преобразования, в котором появляется autoOptions [] ? Для ясности, я ищу способ сделать

Options[foo]={bar->1};
foo[OptionsPattern[]]:=autoOptions[]
foo[]

вывод {bar-> 1}

Конечная цель - сделать что-то вроде запрошенного в этом вопросе без необходимости изменить что-либо, кроме правой части определения.

5
задан Community 23 May 2017 в 12:16
поделиться