11 lines
286 B
Racket
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))))
|
|
|