# Why does this construct give no output control object?

Control@{h[3], 0, 1}

It is puzzling. (The motive for h[i] is to build a list of controls.)

It seems that Control is just a wrapper for ManipulateControl, and that function expects a Symbol as its first argument:

Block[{\$Context = "ManipulateDump"},
Definition[ManipulateControl] // Print;
]
ManipulateControl[var_, ManipulateDumpopts___Rule, ControlType -> type_,
opts2___Rule] := ManipulateControl[var, type, ManipulateDumpopts, opts2]

ManipulateControl[var_Symbol, ManipulateDumpopts : OptionsPattern[]] :=
ManipulateControl[var, Automatic, ManipulateDumpopts]

ManipulateControl[{var_Symbol, args___}, ManipulateDumpopts : OptionsPattern[]] :=
ManipulateControl[{var, args}, Automatic, ManipulateDumpopts]

. . .

All but the first definition use _Symbol which requires that the Head of the expression be Symbol, and the first definition just calls one of the others.

This seems like an oversight as one can easily configure a slider with h[3]:

Dynamic[h[3]]
Slider[Dynamic[h[3]], {0, 1}]
• Thank you @Mr.Wizard . The code you wrote is somewhat too complicated for me but I understand the comment following it. Manipulate too allows h[3]. But what is ManipulateControl? – User18 Mar 1 '16 at 16:33
• @User18 ManipulateControl seems to be the internal function that Control is transformed into the course of evaluation and Front End formatting. I am attempting to follow internal definitions to arrive at this conclusion. The point is that if I am correct and Control relies upon ManipulateControl, and the latter only works with Symbols, then the observed behavior is expected if disappointing. – Mr.Wizard Mar 1 '16 at 17:05
• That's most helpful. It is strange that in the MMA Documentation I cannot find information about it, nor the usage of the  sign acting not as a number mark. Then where should I look them up? – User18 Mar 2 '16 at 2:58
• @User18 ManipulateControl is an internal, behind-the-scenes function and I would not expect to find documentation for it. The use of the backtick here is for Context; this Control is in the context Manipulate . The regular Control is in the System context. See: reference.wolfram.com/language/tutorial/Contexts.html – Mr.Wizard Mar 2 '16 at 11:34
• .@Mr.Wizard Having learned about contexts I now understand the code you posted. Thanks a lot! Ah, it seems we both had a little problem with typing code when the code contained the code wrapper. – User18 Mar 2 '16 at 14:15