¿Hacer que las funciones numéricas sean una instancia de Num?

Quiero poder componer funciones numéricas en haskell usando operadores binarios. Entonces, por ejemplo, con funciones numéricas unarias:

f*g

debería traducir a:

\x -> (f x)*(g x)

y de manera similar para la adición. Hacer que tu propio operador haga esto es bastante sencillo, pero realmente me gustaría hacerNum a => a -> a funciona una instancia de Num, pero no estoy seguro de cómo hacerlo.

También me gustaría hacer que este arity sea genérico, pero eso podría ser un problema para lo difícil que es hacer funciones genéricas de arity en Haskell, por lo que podría ser mejor definir por separadoNum a => a -> a -> a, Num a => a -> a -> a -> a, etc ... instancias hasta un número razonablemente grande.

Respuestas a la pregunta(2)

Su respuesta a la pregunta