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 |
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): |
|||
⚫ | |||
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 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 |
| reduce items as $item (null; .+$item), |
||
⚫ | |||
traverse(- .), |
|||
⚫ | |||
⚫ | |||
⚫ | |||
<pre> |
<pre> |
||
3 |
3 |
||
-1 |
|||
-2 |
|||
{ |
{ |
||
"item": -1, |
"item": -1, |
||
Line 1,032: | Line 1,023: | ||
} |
} |
||
</pre> |
</pre> |
||
=={{header|Julia}}== |
=={{header|Julia}}== |