Algebraic data types: Difference between revisions

(→‎{{header|jq}}: def node:)
Line 1,149:
def E: []; # the empty node
 
def bindingb(x): bindings({} | x) // empty;
 
# Input: [$color, $left, $value, $right]
def balance:
def (binding([B,node: [R, [RB, {.a}, {.x}, {x}.b], {.y}, {[B, .c}], {.z}, {.d}])];
 
| [R, [B, .a, .x, .b], .y, [B, .c, .z, .d]])
// (bindingb([B, [R, [R, {a}, {x}, [R, {bx}], {y}, {c}]], {z}, {d}]) | node)
// | (b([RB, [BR, .{a}, .{x}, [R, .{b]}, . {y}, [B, .{c}]], .{z}, .{d}]) ] | node)
// (bindingb([B, {a},{x}, [R, [R, {b}, {y}, {c}], {z}, {d}]]) | node)
// | [R, (b([B, .{a}, .{x}, [R, .{b]}, .{y}, [BR, .{c}, .{z}, .{d}] ]])| node)
// (bindingb([B{col}, {a}, {x}, [R, {b}, {y}, [R, {c}, {z}, {d}]]])
| [R.col, [B, .a, .x, .b], .y, [B, .c, .z, .d]) ]);
// (binding([{col}, {a}, {x}, {b}])
| [.col, .a, .x, .b ]) ;
 
# Input: a node
Line 1,221 ⟶ 1,219:
15
</pre>
 
 
=={{header|Julia}}==
2,442

edits