Singly-linked list/Traversal: Difference between revisions

Line 1,000:
 
'''test_list | traverse''' and '''test_list | traverse2''' produce identical results: a stream of the "car" values.
 
=={{header|jq}}==
{{works with|jq}}
'''Works with gojq, the Go implementation of jq'''
 
For context see [[Singly-linked_list/Element_definition#jq]].
 
Here we define a "map" filter as well as two two traversal filters.
<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.
def traverse: traverse(.);
 
def map_singly_linked_list(f):
def m:
if has("item") then (.item |= f) | (.next |= m)
else . end;
m;
</lang>
'''Examples'''
<lang jq>{
"item": 1,
"next": {
"item": 2,
"next": null
}
}
| reduce traverse as $item (null; .+$item),
traverse(- .),
map_singly_linked_list(- .)
</lang>{{out}}
<pre>
3
-1
-2
{
"item": -1,
"next": {
"item": -2,
"next": null
}
}
</pre>
 
 
=={{header|Julia}}==
2,460

edits