Es gibt mehrere Möglichkeiten, es zu tun, aber sie sind alle etwas peinlich.
((+3).) . (*)
≡ fmap (+3) . (*)
≡ curry $ (+3) . uncurry (*)
≡ \l r -> l*r + 3
Oh, warten Sie, das war die Unterschrift, wo es auch eine kompakte Definition, erraten, was es ...
((.).(.)) (+3) (*)
genannt argumentieren, ich würde, dass die Lambda-Lösung, am deutlichsten zu sein, ist eher das Beste hier.
Was hilft und wird oft nur lokal als ein (oder zwei) -Liner getan, ist diese Zusammensetzung als benutzerdefinierte Infix zu definieren:
(.:) :: (c->d) -> (a->b->c) -> a->b->d
f .: i = \l r -> f $ i l r
die Sie einfach (+3) .: (*)
zu schreiben.
BTW, für die ähnliche (b->b->c) -> (a->b) -> a->a->c
(die richtige Funktion zu beide Argumente der Infix precompose) gibt es a widely-used standard implementation.
http://conal.net/blog/posts/semantic-editor-combinators – luqui
[This] (http://stackoverflow.com/questions/9656797/variadic-compose-function) könnte das sein, was Sie suchen . – is7s