discard smart-pattern

This commit is contained in:
Tony Garnock-Jones 2024-05-17 13:01:16 +02:00
parent 6aa1250d32
commit ba869b5cb6
1 changed files with 4 additions and 0 deletions

View File

@ -6,10 +6,12 @@
(provide rec
arr
dict
discard
rec*
arr*
dict*
discard*
literal->literal-pattern
literal-pattern->literal
@ -43,10 +45,12 @@
(define (rec label pats) (Pattern-group (GroupType-rec label) (items->entries pats)))
(define (arr pats) (Pattern-group (GroupType-arr) (items->entries pats)))
(define (dict pats) (Pattern-group (GroupType-dict) pats))
(define (discard) (Pattern-discard))
(define (rec* label pats) (rec 'group (list (rec 'rec (list (lit label))) (dict (items->entries pats)))))
(define (arr* pats) (rec 'group (list (rec 'arr (list)) (dict (items->entries pats)))))
(define (dict* pats) (rec 'group (list (rec 'dict (list)) (dict pats))))
(define (discard*) (rec '_ (list)))
(define (literal->literal-pattern v)
(let walk ((v (->preserve v)))