3 replaced http://mathematica.stackexchange.com/ with https://mathematica.stackexchange.com/
source | link

The two standard approaches to this problem, Unevaluated and Listable, have already been posted.

If you need a different kind of evaluation control please consider my original method:(1)(1),(2)(2),(3)(3),(4)(4)

Load step http://mathematica.stackexchange.com/questions/334/how-do-i-evaluate-only-one-step-of-an-expression/1447#1447How do I evaluate only one step of an expression? then:

SetAttributes[f2, HoldAll]

f2[s_Symbol] := step[s] /. {_[x_List] :> f2 /@ Unevaluated[x], _ :> ValueQ[s]}

Now:

x = 1;
q := {x, y, z};

f2[q]
{True, False, False}

The two standard approaches to this problem, Unevaluated and Listable, have already been posted.

If you need a different kind of evaluation control please consider my original method:(1),(2),(3),(4)

Load step http://mathematica.stackexchange.com/questions/334/how-do-i-evaluate-only-one-step-of-an-expression/1447#1447 then:

SetAttributes[f2, HoldAll]

f2[s_Symbol] := step[s] /. {_[x_List] :> f2 /@ Unevaluated[x], _ :> ValueQ[s]}

Now:

x = 1;
q := {x, y, z};

f2[q]
{True, False, False}

The two standard approaches to this problem, Unevaluated and Listable, have already been posted.

If you need a different kind of evaluation control please consider my original method:(1),(2),(3),(4)

Load step How do I evaluate only one step of an expression? then:

SetAttributes[f2, HoldAll]

f2[s_Symbol] := step[s] /. {_[x_List] :> f2 /@ Unevaluated[x], _ :> ValueQ[s]}

Now:

x = 1;
q := {x, y, z};

f2[q]
{True, False, False}
2 simplify answer and examples to reduce obfuscation of method
source | link

The two standard approaches to this problem, Unevaluated and Listable, have already been posted.

If you need a different kind of evaluation control please consider my original method:(1),(2),(3),(4)

Load step http://mathematica.stackexchange.com/questions/334/how-do-i-evaluate-only-one-step-of-an-expression/1447#1447 then:

SetAttributes[f2, HoldAll]

f2[s_Symbol] := step[s] /.
  {HoldForm[x_List]_[x_List] :> f2 /@ Unevaluated[x],
   HoldPattern[s] :> False,
   _ :> TrueValueQ[s]}

Now:

x = 1;
q := {x, y, z};

f2[q]
{True, False, False}

This uses step in place of ValueQ. To keep the behavior of ValueQ one may use:

SetAttributes[f3, HoldAll]

f3[s_Symbol] :=
  With[{x = step[s]},
    (x /. _[z_] :> f3 /@ Unevaluated[z]) /; MatchQ[x, HoldForm[_List]]
  ]

f3[s_Symbol] := ValueQ[s]

The two standard approaches to this problem, Unevaluated and Listable, have already been posted.

If you need a different kind of evaluation control please consider my original method:(1),(2),(3),(4)

Load step http://mathematica.stackexchange.com/questions/334/how-do-i-evaluate-only-one-step-of-an-expression/1447#1447 then:

SetAttributes[f2, HoldAll]

f2[s_Symbol] := step[s] /.
  {HoldForm[x_List] :> f2 /@ Unevaluated[x],
   HoldPattern[s] :> False,
   _ :> True}

Now:

x = 1;
q := {x, y, z};

f2[q]
{True, False, False}

This uses step in place of ValueQ. To keep the behavior of ValueQ one may use:

SetAttributes[f3, HoldAll]

f3[s_Symbol] :=
  With[{x = step[s]},
    (x /. _[z_] :> f3 /@ Unevaluated[z]) /; MatchQ[x, HoldForm[_List]]
  ]

f3[s_Symbol] := ValueQ[s]

The two standard approaches to this problem, Unevaluated and Listable, have already been posted.

If you need a different kind of evaluation control please consider my original method:(1),(2),(3),(4)

Load step http://mathematica.stackexchange.com/questions/334/how-do-i-evaluate-only-one-step-of-an-expression/1447#1447 then:

SetAttributes[f2, HoldAll]

f2[s_Symbol] := step[s] /. {_[x_List] :> f2 /@ Unevaluated[x], _ :> ValueQ[s]}

Now:

x = 1;
q := {x, y, z};

f2[q]
{True, False, False}
1
source | link

The two standard approaches to this problem, Unevaluated and Listable, have already been posted.

If you need a different kind of evaluation control please consider my original method:(1),(2),(3),(4)

Load step http://mathematica.stackexchange.com/questions/334/how-do-i-evaluate-only-one-step-of-an-expression/1447#1447 then:

SetAttributes[f2, HoldAll]

f2[s_Symbol] := step[s] /.
  {HoldForm[x_List] :> f2 /@ Unevaluated[x],
   HoldPattern[s] :> False,
   _ :> True}

Now:

x = 1;
q := {x, y, z};

f2[q]
{True, False, False}

This uses step in place of ValueQ. To keep the behavior of ValueQ one may use:

SetAttributes[f3, HoldAll]

f3[s_Symbol] :=
  With[{x = step[s]},
    (x /. _[z_] :> f3 /@ Unevaluated[z]) /; MatchQ[x, HoldForm[_List]]
  ]

f3[s_Symbol] := ValueQ[s]