मैं library लिख रहा हूं जो श्रेणियों पर मानचित्र/गुना संचालन कर सकता है। मुझे ऑपरेटर के साथ ऐसा करने की ज़रूरत है। मैं कार्यात्मक प्रोग्रामिंग से बहुत परिचित नहीं हूं और मैंने मानचित्र के लिए *
और ||
को फोल्ड के लिए चुना है। तो अंतराल में cos(x)
की (जानवर बल एल्गोरिथ्म) अधिकतम लगता है: 8 < x < 9
:मानचित्र/फ़ोल्ड ऑपरेटर (सी ++ में)
double maximum = ro::range(8, 9, 0.01) * std::cos || std::max;
ऊपर में, ro::range
किसी भी एसटीएल कंटेनर के साथ बदला जा सकता है।
मैप/फ़ोल्ड ऑपरेटरों के लिए कोई सम्मेलन होने पर मैं अलग नहीं होना चाहता हूं। मेरा सवाल है: क्या कोई गणित नोटेशन है या क्या कोई भाषा मानचित्र/गुना के लिए ऑपरेटरों का उपयोग करती है?
** संपादित करें **
जो लोग पूछा के लिए, नीचे आरओ वर्तमान में क्या कर सकते हैं के छोटे डेमो है। scc
छोटी उपयोगिता है जो C++ स्निपेट का मूल्यांकन कर सकती है।
// Can print ranges, container, tuples, etc directly (vint is vector<int>) :
scc 'vint V{1,2,3}; V'
{1,2,3}
// Classic pipe. Alogorithms are from std::
scc 'vint{3,1,2,3} | sort | unique | reverse'
{3, 2, 1}
// Assign 42 to [2..5)
scc 'vint V=range(0,9); range(V/2, V/5) = 42; V'
{0, 1, 42, 42, 42, 5, 6, 7, 8, 9}
// concatenate vector of strings ('add' is shotcut for std::plus<T>()):
scc 'vstr V{"aaa", "bb", "cccc"}; V || add'
aaabbcccc
// Total length of strings in vector of strings
scc 'vstr V{"aaa", "bb", "cccc"}; V * size || (_1+_2)'
9
// Assign to c-string, then append `"XYZ"` and then remove `"bc"` substring :
scc 'char s[99]; range(s) = "abc"; (range(s) << "XYZ") - "bc"'
aXYZ
// Remove non alpha-num characters and convert to upper case
scc '(range("abc-123, xyz/") | isalnum) * toupper'
ABC123XYZ
// Hide phone number:
scc "str S=\"John Q Public (650)1234567\"; S|isdigit='X'; S"
John Q Public (XXX)XXXXXXX
कैसे खाली सीमाओं पर अपने गुना ऑपरेटर काम करेंगे? –
फोल्ड के लिए [केले] नामक एक प्रस्तावित गणित नोटेशन (http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.41.125) है। और पर्ल 6 [मेटाएपेटर्स] हैं (http://perl6advent.wordpress.com/2009/12/05/day-5-metaoperator/)। माना जाता है कि दोनों सी ++ के लिए बहुत उपयुक्त नहीं हैं, हालांकि। – phg
@ एनएम - यह वर्तमान में खाली सीमाओं के लिए अपरिभाषित है। लेकिन मैं सिर्फ इस मामले के लिए, फिक्स्चर फिक्स्चर विशेष मूल्य 'blank_value' को जोड़ने के लिए सोच रहा हूं। तो 'add' functor (' std :: plus() के समान) में 'blank_velaue == 0', और' mul == 1' होगा। –