(;module: lux (luxc (lang ["la" analysis]))) (def: #export (unfold-tuple tuple) (-> la;Analysis (List la;Analysis)) (case tuple (#la;Product left right) (#;Cons left (unfold-tuple right)) _ (list tuple))) (def: #export (unfold-variant variant) (-> (Either la;Analysis la;Analysis) [Nat Bool la;Analysis]) (loop [so-far +0 variantA variant] (case variantA (#;Left valueA) (case valueA (#la;Sum choice) (recur (n.inc so-far) choice) _ [so-far false valueA]) (#;Right valueA) [(n.inc so-far) true valueA])))