ऐसा करने के कई तरीके हैं, लेकिन वे सब कुछ अजीब हैं।
((+3).) . (*)
≡ fmap (+3) . (*)
≡ curry $ (+3) . uncurry (*)
≡ \l r -> l*r + 3
ओह, रुको, इस हस्ताक्षर जहां वहाँ भी एक कॉम्पैक्ट परिभाषा है था, लगता है कि यह क्या कहा जाता है ...
((.).(.)) (+3) (*)
मैं बहस चाहते हैं कि लैम्ब्डा समाधान, सबसे स्पष्ट किया जा रहा है, है बल्कि यहां सबसे अच्छा है।
(.:) :: (c->d) -> (a->b->c) -> a->b->d
f .: i = \l r -> f $ i l r
कौन सा आप बस (+3) .: (*)
लिखने के लिए अनुमति देता है:
क्या मदद करता है, और अक्सर एक एक (या दो) -liner के रूप में सिर्फ स्थानीय स्तर पर किया जाता है, एक कस्टम इन्फ़िक्स के रूप में इस रचना को परिभाषित करने के लिए है।
Btw, समान (b->b->c) -> (a->b) -> a->a->c
(इन्फ़िक्स के दोनों तर्क का अधिकार समारोह precompose) के लिए वहाँ a widely-used standard implementation मौजूद है।
http://conal.net/blog/posts/semantic-editor-combinators – luqui
[यह] (http://stackoverflow.com/questions/9656797/variadic-compose-function) हो सकता है कि आप जो खोज रहे हैं । – is7s