Função de aplicação de função em Haskell
Digamos que eu tenha uma lista de funções
functions = [f, g, h]
cada um com o tipoa -> a
Eu também tenho uma lista de valores, digamos números, mas qualquer coisa deve funcionar aqui
vals = [1,2,3]
Eu quero aplicar cada função emfunctions
para o valor correspondente emvals
Meu primeiro instinto é usar um lambda e zipWith:
zipWith (\f v -> f v) functions vals
Mas, francamente, isso parece feio e não é algo que eu esperaria em uma linguagem tão agradável como Haskell. Uma função de aplicação de função soa como a solução. Existe uma coisa dessas? Estou faltando alguma coisa e há uma solução muito melhor para o meu problema? Acabei escrevendo essa construção para uma solução do Project Euler. Funciona, mas eu não gosto.