def Arrays.is_perfect
import bend-osdev-array@0.1.0.1/array.bend as Arrayimport Base
22# whether a is a perfect tree of depth d (every leaf at depth d), the shape
23# Array.new builds and Array.set keeps
24def Arrays.is_perfect(-T: Type, +d: Nat, a: Array<T>) -> Bool:
25 match d a:
26 case 0n ALeaf{x}:
27 True{}
28 case 0n ANode{xs, ys}:
29 False{}
30 case 1n+p ALeaf{x}:
31 False{}
32 case 1n+p ANode{xs, ys}:
33 Bool.and(Arrays.is_perfect(T, p, xs), Arrays.is_perfect(T, p, ys))