Haskell tiene un operador splat como Python y Ruby?

En Python y Ruby (y otros también, estoy seguro). puede prefijar un enumerable con* ("splat") para usarlo como una lista de argumentos. Por ejemplo, en Python:

>>> def foo(a,b): return a + b
>>> foo(1,2)
3
>>> tup = (1,2)
>>> foo(*tup)
3

¿Hay algo similar en Haskell? Supongo que no funcionaría en las listas debido a su longitud arbitraria, pero creo que con las tuplas debería funcionar. Aquí hay un ejemplo de lo que me gustaría:

ghci> let f a b = a + b
ghci> :t f
f :: Num a => a -> a -> a
ghci> f 1 2
3
ghci> let tuple = (1,2)

Estoy buscando un operador (o función) que me permita hacer:

ghci> f `op` tuple
3

He visto(<*>) se llama "splat", pero no parece referirse a lo mismo que splat en otros idiomas. Lo intenté de todos modos:

ghci> import Control.Applicative
ghci> f <*> tuple

<interactive>:1:7:
    Couldn't match expected type `b0 -> b0'
                with actual type `(Integer, Integer)'
    In the second argument of `(<*>)', namely `tuple'
    In the expression: f <*> tuple
    In an equation for `it': it = f <*> tuple

Respuestas a la pregunta(3)

Su respuesta a la pregunta