📄 match.scm
字号:
(pair? (caar args)) (pair? (cdaar args)) (null? (cddaar args)) (list? (cdar args)) (list? (cdr args)) (pair? (cdr args))) ((lambda (pat exp rest body) (if ((cadddr ##match#expanders) pat) `(let ((,pat ,exp)) (match-let* ,rest ,@body)) `(match ,exp (,pat (match-let* ,rest ,@body))))) (caaar args) (cadaar args) (cdar args) (cdr args)) (g176))) (g176))))(define-macro (match-letrec . args) (let ((g200 (cadddr ##match#expanders)) (g199 (lambda (p1 e1 p2 e2 body) `(match-letrec (((,p1 . ,p2) (cons ,e1 ,e2))) ,@body))) (g195 (lambda () (##match#syntax-err `(match-letrec ,@args) "syntax error in"))) (g194 (lambda (pat exp body) `(match-letrec ((,(list->vector pat) (vector ,@exp))) ,@body))) (g186 (lambda (pat exp body) ((cadr ##match#expanders) pat exp body `(match-letrec ((,pat ,exp)) ,@body))))) (if (pair? args) (if (list? (car args)) (if (##match#every (lambda (g206) (if (and (pair? g206) (g200 (car g206)) (pair? (cdr g206))) (null? (cddr g206)) #f)) (car args)) (if (and (list? (cdr args)) (pair? (cdr args))) ((lambda () `(letrec ,@args))) (let g189 ((g190 (car args)) (g188 '()) (g187 '())) (if (null? g190) (g195) (if (and (pair? (car g190)) (pair? (cdar g190)) (null? (cddar g190))) (g189 (cdr g190) (cons (cadar g190) g188) (cons (caar g190) g187)) (g195))))) (if (and (pair? (car args)) (pair? (caar args)) (pair? (cdaar args)) (null? (cddaar args))) (if (null? (cdar args)) (if (and (list? (cdr args)) (pair? (cdr args))) (g186 (caaar args) (cadaar args) (cdr args)) (let g189 ((g190 (car args)) (g188 '()) (g187 '())) (if (null? g190) (g195) (if (and (pair? (car g190)) (pair? (cdar g190)) (null? (cddar g190))) (g189 (cdr g190) (cons (cadar g190) g188) (cons (caar g190) g187)) (g195))))) (if (and (pair? (cdar args)) (pair? (cadar args)) (pair? (cdadar args)) (null? (cdr (cdadar args))) (null? (cddar args))) (if (and (list? (cdr args)) (pair? (cdr args))) (g199 (caaar args) (cadaar args) (caadar args) (car (cdadar args)) (cdr args)) (let g189 ((g190 (car args)) (g188 '()) (g187 '())) (if (null? g190) (g195) (if (and (pair? (car g190)) (pair? (cdar g190)) (null? (cddar g190))) (g189 (cdr g190) (cons (cadar g190) g188) (cons (caar g190) g187)) (g195))))) (let g189 ((g190 (car args)) (g188 '()) (g187 '())) (if (null? g190) (if (and (list? (cdr args)) (pair? (cdr args))) (g194 (reverse g187) (reverse g188) (cdr args)) (g195)) (if (and (pair? (car g190)) (pair? (cdar g190)) (null? (cddar g190))) (g189 (cdr g190) (cons (cadar g190) g188) (cons (caar g190) g187)) (g195)))))) (let g189 ((g190 (car args)) (g188 '()) (g187 '())) (if (null? g190) (if (and (list? (cdr args)) (pair? (cdr args))) (g194 (reverse g187) (reverse g188) (cdr args)) (g195)) (if (and (pair? (car g190)) (pair? (cdar g190)) (null? (cddar g190))) (g189 (cdr g190) (cons (cadar g190) g188) (cons (caar g190) g187)) (g195)))))) (if (pair? (car args)) (if (and (pair? (caar args)) (pair? (cdaar args)) (null? (cddaar args))) (if (null? (cdar args)) (if (and (list? (cdr args)) (pair? (cdr args))) (g186 (caaar args) (cadaar args) (cdr args)) (let g189 ((g190 (car args)) (g188 '()) (g187 '())) (if (null? g190) (g195) (if (and (pair? (car g190)) (pair? (cdar g190)) (null? (cddar g190))) (g189 (cdr g190) (cons (cadar g190) g188) (cons (caar g190) g187)) (g195))))) (if (and (pair? (cdar args)) (pair? (cadar args)) (pair? (cdadar args)) (null? (cdr (cdadar args))) (null? (cddar args))) (if (and (list? (cdr args)) (pair? (cdr args))) (g199 (caaar args) (cadaar args) (caadar args) (car (cdadar args)) (cdr args)) (let g189 ((g190 (car args)) (g188 '()) (g187 '())) (if (null? g190) (g195) (if (and (pair? (car g190)) (pair? (cdar g190)) (null? (cddar g190))) (g189 (cdr g190) (cons (cadar g190) g188) (cons (caar g190) g187)) (g195))))) (let g189 ((g190 (car args)) (g188 '()) (g187 '())) (if (null? g190) (if (and (list? (cdr args)) (pair? (cdr args))) (g194 (reverse g187) (reverse g188) (cdr args)) (g195)) (if (and (pair? (car g190)) (pair? (cdar g190)) (null? (cddar g190))) (g189 (cdr g190) (cons (cadar g190) g188) (cons (caar g190) g187)) (g195)))))) (let g189 ((g190 (car args)) (g188 '()) (g187 '())) (if (null? g190) (if (and (list? (cdr args)) (pair? (cdr args))) (g194 (reverse g187) (reverse g188) (cdr args)) (g195)) (if (and (pair? (car g190)) (pair? (cdar g190)) (null? (cddar g190))) (g189 (cdr g190) (cons (cadar g190) g188) (cons (caar g190) g187)) (g195))))) (g195))) (g195))))(define-macro (match-define . args) (let ((g210 (cadddr ##match#expanders)) (g209 (lambda () (##match#syntax-err `(match-define ,@args) "syntax error in")))) (if (pair? args) (if (g210 (car args))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -