Does that make sense? I feel like ive seen something like this in react bindings maybe? like a single type parameter can generalize a collection of type parameters?
module T1 = {
type t<'a> = (a)
let first: t<'a> => 'a = ((a)) => a
}
module T2 = {
type t<'a, 'b> = ('a, 'b)
let first: t<'a, 'b> => 'a = ((a, )) => a
}
module type T = {
type t
let first: t => ?
}
module Fun = (T: T) => {
let minFirst = (t: T.t): (?, ?) => (t->T.first, t->T.first)
}