मैं एफ # में लाइब्रेरी लिख रहा हूं जो कुछ बिटवाई ऑपरेशंस प्रदान करता है, और मैं यह सुनिश्चित करना चाहता हूं कि जितना संभव हो सके मेरे कई कार्य inline
स्थिर प्रकार पैरामीटर के साथ बाइंडिंग दें (यह अनुमति देता है मुझे एक समारोह लिखने और int16
, int32
, और शायद bignum
के लिए थोड़ा ओवरहेड के साथ उपयोग करने के लिए इसका उपयोग करें)। यह मार्ग निश्चित रूप से किसी बिंदु पर काम करने में विफल रहेगा। कहा पुस्तकालय द्वारा प्रदान की गई कुछ कार्यक्षमता कुछ हद तक जटिल है।एफ # के स्थिर प्रकार पैरामीटर और एन्कोडिंग न्यूमेरिक स्थिरांक का उपयोग
¹ नोट: मुझे इनलाइन को उजागर करने के मुद्दों के बारे में पता है, जो सार्वजनिक इंटरफ़ेस के माध्यम से बाइंडिंग करते हैं।
हालांकि, मैं इसे दूर तक पहुंचने के लिए इसे दूर तक ले जाना चाहता हूं। अभी, मैं इस फ़ॉर्म में population count एल्गोरिदम लिखने की कोशिश कर रहा हूं, और मुझे एक समस्या का सामना करना पड़ रहा है। मुझे यकीन नहीं है कि मास्क को एन्कोड कैसे करें, उदा। 0x3333...
, जो इन एल्गोरिदम में दिखाई देते हैं। मैं कुछ अतिरिक्त बिट ट्रिकरी का उपयोग कर शिफ्ट स्थिरांक और इसी तरह के आसपास मिल सकता है।
क्या कोई चाल है जिसका उपयोग मैं कर सकता हूं, चाहे एफ # के प्रकार के अनुमान और स्थिर प्रकार पैरामीटर के माध्यम से, या बिट-ट्विडलिंग के माध्यम से, जिस तरह से मैं चाहता हूं एल्गोरिदम लिखने के लिए? क्या कोई तरीका है कि मैं स्थिर रूप से जेनेरिक फ़ंक्शन में स्थिरांक के इन प्रकारों को एन्कोड कर सकता हूं?
एक और अस्पष्ट प्रश्न: क्या कुछ विशिष्ट चीजें हैं जिन पर मैं स्थिर प्रकार के मानकों को अपने पूर्ण रूप से उपयोग करने के लिए भरोसा कर सकता हूं, खासकर संख्याओं के संदर्भ में? उदाहरण के लिए, मैं GenericOne
और GenericZero
का भारी उपयोग करता हूं। क्या इस तरह की और चीजें हैं, कि मैं याद कर सकता हूं?
, एक उपयोगी चाल है ताकि आप यानी लिख सकते हैं सामान्य अंकों के परिभाषित करने के लिए है '42g '(http://stackoverflow.com/questions/4732672/how-to-write-a- कार्यक्षमता-for-generic-numbers देखें)। मैंने कुछ और जानकारी के साथ एक लेख भी लिखा, लेकिन मुझे लगता है कि आपको शायद वहां बहुत नया नहीं मिलेगा (http://tomasp.net/blog/fsharp-generic-numeric.aspx देखें)। –
जेनेरिक न्यूमेरिक शाब्दिक का उपयोग करके, आप लिख सकते हैं यानी 'इनलाइन शिफ्ट ए = (ए &&& 8G) <<< 2', लेकिन मुझे लगता है कि यह आपके प्रश्न का उत्तर नहीं है (क्योंकि आप इसे' जेनेरिकऑन 'के साथ कर सकते हैं) । तो, क्या आपके पास कोई विशिष्ट जटिल उदाहरण है जहां प्रत्यक्ष दृष्टिकोण आपके लिए काम नहीं करता है? –
'0x33 ...' '' हस्ताक्षर टाइप 'है। मैक्सवेल्यू/5 * 2 + 1', क्या इससे मदद मिलती है? – harold