Следование обходам выражения
Echo и EchoFunction позволяют предоставить отчёт о порядке, в котором элементы выражений последовательно посещаются в процессе соотношения образцов.
Изучите путём наблюдения порядок, в котором Cases обходит части первого уровня выражения.
In[1]:=
![Click for copyable input](assets.ru/follow-expression-traversals/In_24.png)
Cases[{a, 2, {7, {1, b}}, 0}, x_ /; NumberQ[Echo[x]]]
»
![](assets.ru/follow-expression-traversals/O_21.png)
»
![](assets.ru/follow-expression-traversals/O_22.png)
»
![](assets.ru/follow-expression-traversals/O_23.png)
»
![](assets.ru/follow-expression-traversals/O_24.png)
Out[1]=
![](assets.ru/follow-expression-traversals/O_25.png)
Обойдите все уровни этого же выражения.
In[2]:=
![Click for copyable input](assets.ru/follow-expression-traversals/In_25.png)
Cases[{a, 2, {7, {1, b}}, 0}, x_ /; NumberQ[Echo[x]], All]
»
![](assets.ru/follow-expression-traversals/O_26.png)
»
![](assets.ru/follow-expression-traversals/O_27.png)
»
![](assets.ru/follow-expression-traversals/O_28.png)
»
![](assets.ru/follow-expression-traversals/O_29.png)
»
![](assets.ru/follow-expression-traversals/O_30.png)
»
![](assets.ru/follow-expression-traversals/O_31.png)
»
![](assets.ru/follow-expression-traversals/O_32.png)
»
![](assets.ru/follow-expression-traversals/O_33.png)
»
![](assets.ru/follow-expression-traversals/O_34.png)
Out[2]=
![](assets.ru/follow-expression-traversals/O_35.png)