मैं इस प्रकार एक समारोह प्रोटोटाइप है कहो? मुझे पैरामीटर को [int] से क्या बदलना होगा ..? इस निष्पक्ष पल में यह func [-1, -2] के साथ काम करता है, मैं केवल इसे [1,2] के साथ काम करना चाहता हूं, यानी त्रुटि संदेश को हल करने वाले दुभाषिया के साथ।गैर नकारात्मक पूर्णांक
उत्तर
क्या आपने http://hackage.haskell.org/package/non-negative को आजमाया है?
आप Peano numbers का उपयोग कर सकते हैं, अपने फ़ंक्शन के प्रकार को [Peano] -> ...
पर बदल सकते हैं। लेकिन फिर आपको पूर्णांक से पेनो नंबरों में रूपांतरण फ़ंक्शन जोड़ना होगा और जब भी आप अपना फ़ंक्शन कॉल करेंगे।
या आप एक क्रम की जांच जोड़ सकते हैं:
func xs
| any (< 0) xs = error "only non-negative integers allowed as input"
| otherwise = ...
ध्यान दें कि बाद के समाधान अपने समारोह strict बनाता है।
newtype NonNegative a = NonNegative a
toNonNegative :: (Num a, Ord a) => a -> NonNegative a
toNonNegative x
| x < 0 = error "Only non-negative values are allowed."
| otherwise = NonNegative x
fromNonNegative :: NonNegative a -> a
fromNonNegative (NonNegative x) = x
बस गैर-रचनात्मक कन्स्ट्रक्टर का कभी भी उपयोग करने के लिए सावधान रहें। यदि आप इसे एक अलग मॉड्यूल में डालते हैं और इसे निर्यात नहीं करते हैं तो यह आसान होगा।
इसके अलावा, अब आप संख्याओं की सूची को आलसी रूप से बदलने के लिए (मानचित्र को नॉननेटिवेटिव) का उपयोग कर सकते हैं।
जहां भी आप कच्चे नंबर इंजेक्ट करते हैं, तब भी इसे रनटाइम चेक की आवश्यकता होगी।
वैकल्पिक रूप से, आप Data.Word का उपयोग कर सकते हैं।
smart constructors पर विकी पेज आपको कुछ विचार दे सकता है।
संस्करण के साथ आधार पैकेज में> = 4.8.0.0, जो GHC 7.10.1 में शामिल है और इसके बाद के संस्करण, वहाँ अब एक प्रकार Natural जो आप क्या चाहते हैं करता है - तुम सिर्फ करने के लिए अपने कोड बदल सकते हैं:
import Numeric.Natural (Natural)
func :: [Natural] -> [Int]
यह है, तथापि, Int
करने से Integer
के करीब, की तरह है क्योंकि Integer
और Int
के विपरीत, यह कोई अधिकतम मूल्य है।
क्योंकि Natural
, Integer
की तरह, Num
और Integral
का एक उदाहरण है, सभी एक ही अंकगणितीय आपरेशनों और रूपांतरण कार्यों आप Integer
साथ मिल के रूप में उपलब्ध हैं। ऋणात्मक Natural
की गणना करने के प्रयास रनटाइम पर Underflow
फेंक देंगे, जो ArithException
है। इसके अलावा, आसानी से, आप एक Natural
सिर्फ एक पूर्णांक शाब्दिक का उपयोग कर, बना सकते हैं एक रूपांतरण के बिना:
GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help
Prelude> :m +Numeric.Natural
Prelude Numeric.Natural> 2 :: Natural
2
हालांकि, अगर आप निश्चित-आकार पूर्णांकों का डोमेन में रहना पसंद करते हैं, वहाँ उस के लिए एक समाधान है, भी - और यह बहुत लंबे समय तक रहा है - Word
the module Data.Word से (जिसमें 8-बिट गैर-ऋणात्मक पूर्णांक के लिए Word8
भी शामिल है)। आप Word
का उपयोग Natural
पर उसी तरह करेंगे।
GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help
Prelude> :m +Data.Word
Prelude Data.Word> 2 :: Word
2
Prelude Data.Word> it - 4
18446744073709551614
- 1. बड़ी नकारात्मक पूर्णांक शाब्दिक
- 2. पाइथन पैकेज वास्तविक, वर्ग, गैर-नकारात्मक मैट्रिक्स
- 3. डब्ल्यूपीएफ - चौड़ाई और ऊंचाई गैर-नकारात्मक
- 4. मैं गैर नकारात्मक कॉलम के बारे में कैसे सुनिश्चित करूं?
- 5. नकारात्मक पूर्णांक की जांच का उपयोग कर बिट संचालन
- 6. शैल लूप गैर-पूर्णांक का उपयोग कर?
- 7. पायथन की राशि() और गैर-पूर्णांक मान
- 8. jQuery में गैर पूर्णांक ऑफ़सेट स्थिति
- 9. क्या लिनक्स में प्रक्रिया ids गैर-नकारात्मक हैं?
- 10. सबसे नकारात्मक मूल्य अजगर
- 11. क्या नकारात्मक पूर्णांक परिभाषित व्यवहार को बाएं और दाएं स्थानांतरित कर रहे हैं?
- 12. क्यों अहस्ताक्षरित int नकारात्मक संख्या
- 13. गुणा के बाद नकारात्मक मान नकारात्मक- जावा
- 14. नकारात्मक संख्या
- 15. नकारात्मक प्रत्यय
- 16. चेतावनी: गैर-पूर्णांक # एक द्विपक्षीय glm में विफलता! (सर्वेक्षण पैकेज)
- 17. जेड 3 गैर-रैखिक पूर्णांक अंकगणित कैसे संभालता है?
- 18. पूर्णांक कारक एक गैर-बहुपद समय क्यों है?
- 19. डोम तत्व चौड़ाई गैर-पूर्णांक हो सकती है?
- 20. गैर-ऋणात्मक पूर्णांक और दशमलव मानों के लिए सत्यापन
- 21. बिट्स नकारात्मक संख्याओं का प्रतिनिधित्व
- 22. यदि कथन पूर्णांक
- 23. मिल एक पूर्णांक पूर्णांक
- 24. .NET Math विधि के लिए खोज रहे हैं जो एक नकारात्मक पूर्णांक शून्य होगा
- 25. जावा नकारात्मक पूर्णांक हेक्स के लिए और वापस में विफल रहता है
- 26. हस्ताक्षर किए गए पूर्णांक पढ़ने पर नकारात्मक संख्याओं को पार्सिंग त्रुटियों के रूप में कैसे पहचानें?
- 27. एक नकारात्मक पूर्णांक को दो पूरक पूरक बाइनरी रूप में कैसे परिवर्तित करें? (जावा)
- 28. अधिकतम नकारात्मक पूर्णांक -2147483648 का पूर्ण मूल्य अभी भी -2147483648 है?
- 29. मान्य धनात्मक पूर्णांक
- 30. हैशटेबल हैशिंग नकारात्मक हैशकोड से बचें
मुझे उम्मीद है कि किसी को कैसे प्रकार के साथ ऐसा करने के लिए, यह दिखाएगा लेकिन अब मैं देख सकता हूँ कि यह असंभव है - के लिए टिप्पणी से:,
Word
प्रकार होगा चुपचाप अधःप्रवाह एक अपवाद फेंकने के बिना - हालांकि, चेतावनी दी NonNegative.C प्रकार वर्ग गैर-ऋणात्मक में: "इस वर्ग के उदाहरणों को गैर-ऋणात्मक मान सुनिश्चित करना चाहिए। हम इसे प्रकार से लागू नहीं कर सकते हैं, लेकिन प्रकार की कक्षा की बाधा NonNegative.C प्रकारों के आकस्मिक उपयोग से बचाती है जो नकारात्मक संख्याओं की अनुमति देती है।" कितना निराशाजनक है :-) – liwp