Add bind/bind* to smart-pattern
This commit is contained in:
parent
ba869b5cb6
commit
35b94db883
|
@ -7,11 +7,13 @@
|
|||
arr
|
||||
dict
|
||||
discard
|
||||
bind
|
||||
|
||||
rec*
|
||||
arr*
|
||||
dict*
|
||||
discard*
|
||||
bind*
|
||||
|
||||
literal->literal-pattern
|
||||
literal-pattern->literal
|
||||
|
@ -46,11 +48,13 @@
|
|||
(define (arr pats) (Pattern-group (GroupType-arr) (items->entries pats)))
|
||||
(define (dict pats) (Pattern-group (GroupType-dict) pats))
|
||||
(define (discard) (Pattern-discard))
|
||||
(define (bind [pat (discard)]) (Pattern-bind pat))
|
||||
|
||||
(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 (bind* [pat (discard)]) (rec 'bind (list pat)))
|
||||
|
||||
(define (literal->literal-pattern v)
|
||||
(let walk ((v (->preserve v)))
|
||||
|
|
Loading…
Reference in New Issue