Ho scoperto che non esiste un concetto simile a "sottotipizzazione basata sull'arità" in molte lingue in cui ho programmato, in cui le funzioni di ordine superiore potrebbero consumare funzioni di arità inferiore rispetto al loro tipo di argomento, differendo in un modo coerente: ad esempio, mantenendo gli argomenti più a sinistra in ordine o richiedendo coppie di tipo nome corrispondenti. Ad esempio, (A) -> C <: (A, B) -> C
tale che ((A, B) -> C) -> D
ammette (A) -> C
. Una tale caratteristica sarebbe equivalente al polimorfismo ad hoc e, in caso affermativo, perché non viene offerta o utilizzata molto / affatto?
Un caso speciale a cui sono particolarmente interessato è la sostituzione dei valori per le funzioni dello stesso tipo di ritorno senza il wrapping in una funzione di identità, ovvero ((A) -> B) -> C
ammette B
. Se questo esiste ed è meglio conosciuto con un nome diverso, risponderebbe sicuramente alla mia domanda.