typed-racket/typed-racket-test/succeed/define-new-subtype-mu-rec.rkt
2015-08-14 21:42:20 -05:00

11 lines
286 B
Racket

#lang typed/racket/base
(define-new-subtype Lst (make-Lst (U Null (Pairof Elt Lst))))
(define-new-subtype Elt (make-Elt (U Symbol Lst)))
(: lst : [Elt * -> Lst])
(define (lst . args)
(for/fold ([lst (make-Lst '())]) ([elt (in-list (reverse args))])
(make-Lst (cons elt lst))))