Singly-linked list/Traversal: Difference between revisions

Content added Content deleted
(→‎{{header|jq}}: remove older version)
(/* {{header|jq}} def items:)
Line 991: Line 991:
For context see [[Singly-linked_list/Element_definition#jq]].
For context see [[Singly-linked_list/Element_definition#jq]].


Here we define a "map" filter as well as two two traversal filters.
Here we define a "map" filter as well as a traversal filter.
<lang jq>
<lang jq>
# Traverse the input SLL, applying the filter f to each item.
def traverse(f):
def t:
select(has("item")) | (.item|f), (.next|t);
t;

# Produce a stream of the items in the input SLL.
# Produce a stream of the items in the input SLL.
def items:
def traverse: traverse(.);
while(.; .next) | .item;


def map_singly_linked_list(f):
def map_singly_linked_list(f):
Line 1,006: Line 1,001:
if has("item") then (.item |= f) | (.next |= m)
if has("item") then (.item |= f) | (.next |= m)
else . end;
else . end;
m;
m;</lang>
</lang>
'''Examples'''
'''Examples'''
<lang jq>{
<lang jq>{
Line 1,016: Line 1,010:
}
}
}
}
| reduce traverse as $item (null; .+$item),
| reduce items as $item (null; .+$item),
map_singly_linked_list(- .)</lang>
traverse(- .),
{{out}}
map_singly_linked_list(- .)
</lang>{{out}}
<pre>
<pre>
3
3
-1
-2
{
{
"item": -1,
"item": -1,
Line 1,032: Line 1,023:
}
}
</pre>
</pre>



=={{header|Julia}}==
=={{header|Julia}}==