[plt-scheme] Re: Call for Participation: Writing Typed Scheme wrapper modules
I started doing scheme/string, but ran into a difficulty when typing
string-append*
Its argument list is a list of strings except the last element which
itself is a list of strings.
So the argument list has type (Listof* String)
where,
(define-type-alias (Listof* Elt-type)
(Rec T (U [Pair Elt-type T]
[Pair (Listof Elt-type) '()])))
except that -> type constructor doesn't let you play with the argument
list directly, but the individual arguments,
of the 4 cases listed in the reference documentation for ->, cases 1
and 4 only allow finitely many arguments,
but case 2 has a uniform rest argument, and case 3 is somewhat
confusing to me (as to what exactly the bound parameter is upto).