Simplified split-xlist so that it might typecheck in Racket v.6.5

This commit is contained in:
Georges Dupéron 2016-09-25 16:19:46 +02:00
parent 250885b002
commit 76c9e89b20

View File

@ -22,15 +22,12 @@
(List (Listof A) (List (Listof A)
B))) B)))
(define (recur l) (define (recur l)
(if (null? l) (if (pred-b? l)
(list '() (ann l B)) (list '() l)
(if (pred-b? l) (let ([split-rest (recur (cdr l))])
(list '() l) (cons (cons (car l)
(let ([split-rest (recur (cdr l))]) (car split-rest))
(cons (cons (car l) (cdr split-rest)))))
(car split-rest))
(cdr split-rest)))
)))
recur) recur)
(define-syntax-rule (m-split-list v (xlist τ₁ ^ *₁ . whole-τ-rest)) (define-syntax-rule (m-split-list v (xlist τ₁ ^ *₁ . whole-τ-rest))
@ -42,10 +39,6 @@
(make-predicate (xlist . whole-τ-rest))) (make-predicate (xlist . whole-τ-rest)))
v)) v))
#;(: cons2 ( (A B ...) ( A (List B ...) (List A B ...))))
#;(define (cons2 a b)
(cons a b))
(define-syntax (bounded-filter stx) (define-syntax (bounded-filter stx)
(syntax-case stx () (syntax-case stx ()
[(_ 0 heads t l) [(_ 0 heads t l)