Talk:Tree from nesting levels: Difference between revisions
Content added Content deleted
Line 69: | Line 69: | ||
[1, [2, [[4]]]] -> [[1, [2, [[4]]]]]</pre> |
[1, [2, [[4]]]] -> [[1, [2, [[4]]]]]</pre> |
||
[[User:Hout|Hout]] ([[User talk:Hout|talk]]) 12:23, 4 February 2021 (UTC) |
[[User:Hout|Hout]] ([[User talk:Hout|talk]]) 12:23, 4 February 2021 (UTC) |
||
To put this in a Python notation, if we '''start''' with one of these forests ('''lists''' of trees), mapping over each of its members with a foldTree catamorphism, passing a function like this to it: |
|||
<pre>def levelList(x): |
|||
'''A Tree in which is node is a tuple of two values: |
|||
A possible integer, and a list of trees. |
|||
(Int or None, [Tree]) |
|||
''' |
|||
def go(xs): |
|||
if x.get('Nothing', False): |
|||
return (None, concat(xs)) |
|||
else: |
|||
return (x.get('Just', 0), concat(xs)) |
|||
return go</pre> |
|||
We can obtain a self-consistent representation of these forests as lists of tuples, in which the first value is a kind of sum type (Int or None), and the second value is itself a (possibly empty) forest: |
|||
<lang python>[] |
|||
[(1, [2, [None, [4, []]]])] |
|||
[(None, [None, [3, []]]), (1, [None, [3, []]]), (1, [])] |
|||
[(1, [2, [3, []]]), (1, [])] |
|||
[(None, [None, [3, []], 2, []]), (1, [None, [3, []]])] |
|||
[(None, [None, [3, [], 3, [], 3, []]]), (1, []), (1, [None, [3, [], 3, [], 3, []]])]</lang> |
|||
[[User:Hout|Hout]] ([[User talk:Hout|talk]]) 14:00, 4 February 2021 (UTC) |