Шаблон name_
соответствует строке "x"
, в результате чего Apply[Symbol,"x"]
возвращает объект с головой String
. Затем это передается Pattern
, который возвращает то, что вы видите. Чтобы получить то, что вы ожидаете, вы должны передать Symbol
на Pattern
. Изучите различные результаты, которые вы получаете с FullForm[]
.
Вероятно, вы можете сделать это, изменив фрагмент:
Pattern[Apply[Symbol,name],_]]
до
Pattern[Evaluate[ToExpression[name],_]]
, но это будет работать, только если ToExpression[name]
вернет Symbol
. Я обнаружил, что мне пришлось форсировать оценку.