Nested templated data: Difference between revisions
Content added Content deleted
(→{{header|Python}}: added zkl header) |
(→{{header|zkl}}: added code) |
||
Line 173: | Line 173: | ||
=={{header|zkl}}== |
=={{header|zkl}}== |
||
Formatting is lost as zkl is format free. A pretty printer could be written but |
|||
⚫ | |||
the tasks asks for a data structure. |
|||
<lang zkl></lang> |
|||
Void is used as a marker for an unknown payload. |
|||
<lang zkl>var payloads=[1..6].pump(List,"Payload#".append); |
|||
fcn get(n){ try{ payloads[n - 1] }catch{ Void } } |
|||
fcn sub(list){ list.pump(List, fcn(n){ if(n.isType(List)) sub(n) else get(n) }) } |
|||
fcn template(list){ list.pump(List,sub) }</lang> |
|||
<lang zkl>foreach p in (T( |
|||
T(T(T(1, 2), |
|||
T(3, 4, 1), |
|||
5),), |
|||
T(T(T(1, 2), |
|||
T(10,4, 1), |
|||
5),))){ |
|||
println(" Template: %s\nData structure: %s".fmt(p,sub(p))); |
|||
⚫ | |||
{{out}} |
{{out}} |
||
<pre> |
<pre> |
||
Template: L(L(L(1,2),L(3,4,1),5)) |
|||
Data structure: L(L(L("Payload#1","Payload#2"),L("Payload#3","Payload#4","Payload#1"),"Payload#5")) |
|||
Template: L(L(L(1,2),L(10,4,1),5),L()) |
|||
Data structure: L(L(L("Payload#1","Payload#2"),L(Void,"Payload#4","Payload#1"),"Payload#5"),L()) |
|||
</pre> |
</pre> |