Simplify printing for list type special cases
original commit: 755998ba8285d313d2bdcbd1fb469c7e6a1c904c
This commit is contained in:
parent
bee2da86df
commit
6c05fedfb8
|
@ -19,7 +19,12 @@
|
|||
(lambda (stx)
|
||||
(syntax-parse stx
|
||||
[(_ elem-pat (~optional var-pat #:defaults ([var-pat #'var])))
|
||||
(syntax/loc stx (Mu: var-pat (Union: (list (Value: '()) (Pair: elem-pat (F: var-pat))))))])))
|
||||
;; Note: in practice it's unlikely that the second pattern will ever come up
|
||||
;; because the sequence number for '() will be low and the union will
|
||||
;; be sorted by sequence number. As a paranoid precaution, however,
|
||||
;; we will match against both patterns here.
|
||||
(syntax/loc stx (or (Mu: var-pat (Union: (list (Value: '()) (Pair: elem-pat (F: var-pat)))))
|
||||
(Mu: var-pat (Union: (list (Pair: elem-pat (F: var-pat)) (Value: '()))))))])))
|
||||
|
||||
(define-match-expander List:
|
||||
(lambda (stx)
|
||||
|
@ -40,4 +45,6 @@
|
|||
(lambda (stx)
|
||||
(syntax-parse stx
|
||||
[(_ elem-pat)
|
||||
#'(Mu: var (Union: (list (Value: '()) (MPair: elem-pat (F: var)))))])))
|
||||
;; see note above
|
||||
#'(or (Mu: var (Union: (list (Value: '()) (MPair: elem-pat (F: var)))))
|
||||
(Mu: var (Union: (list (MPair: elem-pat (F: var)) (Value: '())))))])))
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
(prefix-in s: srfi/1)
|
||||
(path-up "rep/type-rep.rkt" "rep/filter-rep.rkt" "rep/object-rep.rkt"
|
||||
"rep/rep-utils.rkt" "types/subtype.rkt"
|
||||
"types/match-expanders.rkt"
|
||||
"utils/utils.rkt"
|
||||
"utils/tc-utils.rkt")
|
||||
(for-syntax racket/base syntax/parse))
|
||||
|
@ -324,13 +325,9 @@
|
|||
[(App: rator rands stx)
|
||||
(list* (type->sexp rator) (map type->sexp rands))]
|
||||
;; special cases for lists
|
||||
[(Mu: var (Union: (list (Value: '()) (Pair: elem-ty (F: var)))))
|
||||
[(Listof: elem-ty)
|
||||
`(Listof ,(t->s elem-ty))]
|
||||
[(Mu: var (Union: (list (Pair: elem-ty (F: var)) (Value: '()))))
|
||||
`(Listof ,(t->s elem-ty))]
|
||||
[(Mu: var (Union: (list (Value: '()) (MPair: elem-ty (F: var)))))
|
||||
`(MListof ,(t->s elem-ty))]
|
||||
[(Mu: var (Union: (list (MPair: elem-ty (F: var)) (Value: '()))))
|
||||
[(MListof: elem-ty)
|
||||
`(MListof ,(t->s elem-ty))]
|
||||
;; format as a string to preserve reader abbreviations and primitive
|
||||
;; values like characters (when `display`ed)
|
||||
|
|
Loading…
Reference in New Issue
Block a user