2012-04-22 14 views
5

मेरे पास एक प्रोग्राम है जो Int और Integer दोनों का उपयोग करता है, क्योंकि कुछ फ़ंक्शन परिणाम लौटते हैं जो काफी बड़े होते हैं। मैं हर जगह fromIntegral का उपयोग करने के थक गया हूं और मैं सोच रहा था कि संकलन पर Int और Integer के बीच भेद को अनदेखा करने के लिए हास्केल प्राप्त करने का कोई तरीका है या नहीं।क्या हास्केल इन्ट्स बनाम इंटीग्रर्स को अनदेखा कर सकता है?

+4

कोई नहीं है। इस तथ्य को अनदेखा करते हुए कि वे अलग-अलग प्रकार और विभिन्न गुण हैं, एक भाषा में भी बुरा होगा, साथ ही हास्केल के रूप में टाइप किया जाएगा। मैं मानता हूं कि यह कभी-कभी दर्दनाक होता है लेकिन अंतर को अनदेखा करना बुरा होगा; और हास्केल द्वारा प्रदान की जाने वाली प्रकार की सुरक्षा के पूरे बिंदु को याद कर रहा है। –

+8

नहीं, ऐसा नहीं है। और यह एक अच्छी बात है: सुरक्षा टाइप करें। आप नाम बदलने के लिए छोटे से रूपांतरण को परिभाषित कर सकते हैं, हालांकि :) –

+3

कम से कम जीएचसी में, 'इंटीजर' आंतरिक रूप से 'Int' का उपयोग तब तक करेगा जब तक यह कर सके, इसलिए यह' Int' का उपयोग करने के लिए जरूरी नहीं है इस मामले में। – geekosaur

उत्तर

13

समाधान: अपने प्रोग्राम से Int एस हटाएं और बस सभी Integer एस का उपयोग करें। जैसा कि geekosaur द्वारा उल्लेख किया गया है, आप the generic functions from Data.List (उदा। genericLength) का उपयोग कर सकते हैं। यदि आप हमें अपना विशिष्ट प्रोग्राम कोड प्रदान करते हैं, तो हम अधिक विशिष्ट सुझाव दे सकते हैं।

संबंधित मुद्दे