pattern-slots.tri (712B)
1 !import prelude * 2 !export * 3 -- Compiler-side capture order for validated authored patterns. 4 -- Prepend captures in traversal order, so the returned list is reversed. 5 -- Literal trees are opaque; this is not a matcher or reference evaluator. 6 7 patternSlots_ self pattern slots = matchPair (tag payload : 8 lazyBool (_ : self payload slots) 9 (_ : lazyBool (_ : matchPair (left right : self right (self left slots)) payload) 10 (_ : lazyBool (_ : pair payload slots) 11 (_ : lazyBool (_ : matchPair (slot child : self child (pair slot slots)) payload) 12 (_ : slots) (equal? tag 6)) (equal? tag 4)) (equal? tag 3)) (equal? tag 2)) pattern 13 patternSlots pattern slots = y patternSlots_ pattern slots