Une fonction de fonctions

Y a-t-il moyen de créer un type de fonction qui soit le type de retour d’une autre fonction sans avoir la même structure qu’une autre dans le même cas, mais ayant le même type de paramètre de retour ?
quelque chose du genre :
func droleDeFonc(parameter: [String]) ->(Int, or String)->String{…} ?
Ou encore, une fonction acceptant un paramètre de type ambigu, un coup une String, d’autre fois un Int avec un test dans la fonction pour orienter son exécution, pourvu que le type du paramètre de retour soit le même ? On doit-on m’alourdir en utilisant deux paramètre optionnels ?

Apparemment, il n’y a pas moyen.
On peut faire ça, mais il faut que le type de retour fonction soit lui-même déclaré avec des paramètres et un type de retour : on peut donc à l’exécution faire passer différentes fonctions en tant que paramètre de retour, mais qui auront des paramètres conformes aux types déclarés au départ, donc pas Int pour une et String pour l’autre, et avec un type de retour conforme lui aussi.
Ce n’était pas la bonne solution à mon problème. Je l’ai résolu autrement.
Pour information, dans un ForEach, qui ne supporte pas l’usage du type () dans sa closure pour non conformité au type View, l’opérateur ternaire passe… En revanche, il tend à croire que tous les intervalles de travail, les « range », ne sont pas constants, sont variables, s’ils ne sont pas bornés par des « literal Integer », mais par des valeurs symboliques, même des « let ». Je ne suis pas sûr que c’était le cas auparavant. Désormais, ça renvoie un warning. Je ne sais pas comment faire sauter ce warning, je me demande quand et comment va-t-il devenir une erreur…