Non conosco alcun termine per la tua operazione, ma può essere visto come una sorta di mappatura, quindi forse non hai bisogno di un nome speciale per questo. Illustrerò questo in Haskell, ma è facile fare lo stesso in altre lingue, ad es. Python, Clojure, Javascript, ecc.
In haskell map
ha tipo:
map :: (a -> b) -> [a] -> [b]
Ad esempio, puoi mappare length
su un elenco di stringhe:
xs = ["Good", "morning", "world"] :: [String]
> map length xs
[4,7,5]
Ora supponiamo di avere un elenco di funzioni, ad es.
fs = [(+ 1), (* 5), (* 2)] :: [Int -> Int]
Come puoi applicare ciascuna funzione allo stesso numero, ad esempio 1
? Puoi usare la funzione:
($) :: (a -> b) -> a -> b
Questa funzione prende un'altra funzione e la applica a un argomento. Se lo applichi parzialmente al numero 1
, ottieni:
($ 1) :: Num a => (a -> b) -> b
Questa è una funzione che ha una funzione da un tipo numerico a qualsiasi tipo b, la applica a 1
. Quindi, ora possiamo mappare ($ 1)
sul nostro elenco di funzioni:
> map ($ 1) fs
[2,5,2]
Quindi, in generale, dato un input x :: a
e un elenco di funzioni fs :: [a -> b]
puoi applicare tutte le funzioni a x
con map ($ x) fs
, che ti dà un risultato di tipo [b]
.