typed-racket icon indicating copy to clipboard operation
typed-racket copied to clipboard

[Feature Request] Adding `...` Support to `define-type`

Open NoahStoryM opened this issue 6 months ago • 0 comments

While TR provides variadic type constructors like Values, U, and Sequenceof, users cannot define their own using define-type. Currently, define-type treats ... as a normal type argument. For instance, attempting to define a variadic My-Union:

> (define-type (My-Union t ...) (U t ...))
> (ann 1 (My-Union 1 0))
- : Integer [more precisely: (U One Zero)]
1
> (ann 1 (My-Union 1))
string:1:7: Type Checker: Error in macro expansion -- wrong number of arguments to type constructor
  type: #<syntax:string:1:8 My-Union>
  expected: 2
  given: 1
  in: (My-Union 1)
 [,bt for context]
> (ann 1 (My-Union 2 1 0))
string:1:7: Type Checker: Error in macro expansion -- wrong number of arguments to type constructor
  type: #<syntax:string:1:8 My-Union>
  expected: 2
  given: 3
  in: (My-Union 2 1 0)
 [,bt for context]

NoahStoryM avatar Apr 20 '25 13:04 NoahStoryM