Functor taking type of different arity?

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)
}