typed-racket/typed-racket-test/succeed/pr13646.rkt
2014-12-16 10:07:25 -05:00

18 lines
410 B
Racket

#lang typed/racket
(struct: (A) Queue ([elem : A]))
(: qmap :
(All (A B ...)
(case->
((A -> A) (Queue A) -> (Queue A))
((A B ... B -> A) (Queue A) (Queue B) ... B -> (Queue A)))))
(define qmap
(pcase-lambda:
(A B ...)
[([func : (A -> A)] [deq : (Queue A)])
deq]
[([func : (A B ... B -> A)]
[deq : (Queue A)] . [deqs : (Queue B) ... B])
deq]))