2012-12-20 36 views
7

तो मुझे हास्केल पसंद है, लेकिन मैं न्यू क्लास से असंतुष्ट हूं। तो मैं बीजगणितीय प्रकार के लिए अपना खुद का टाइपक्लास श्रेणीबद्ध बनाना चाहता हूं।
समस्या यह है कि, अगर मैं प्रीलूड छिपाने वाले न्यूम और इसके साथ जुड़ी सबकुछ आयात करता हूं, फिर भी शाब्दिक 1 बनाने का एकमात्र तरीका टाइप टी है, उदाहरण उदाहरण संख्या है।
मैं अपने खुद के fromInteger वर्ग बनाने के लिए और पूरी तरह से Num तस्वीर से बाहर जाने के लिए प्यार होता है, इसहास्केल में इंटेगर से ओवरराइडिंग

import Prelude hiding (everything having to do with Num) 
import qualified Prelude (everything having to do with Num) 

class (Eq fi) => FromInteger fi where 
    fromInteger :: Integral -> fi 

foo :: (FromInteger fi) => fi -> String 
foo 1 = "that was a one" 
foo 0 = "that was a zero" 
foo n = "that was neither zero nor one" 

की तरह और फिर मैं fromInteger उचित रूप से ब्रांड के नए प्रकार के लिए लागू होता है और कभी नहीं Num बारे में कुछ भी कहना है।

क्या पार्सर को इंटेगर विधि से अलग उपयोग करने का कोई तरीका है?

धन्यवाद!

उत्तर

12

आप जीएचसी के RebindableSyntax extension की तलाश में हैं।

अपने स्रोत फ़ाइल के शीर्ष पर

{-# LANGUAGE RebindableSyntax #-} 

रख कर इसे सक्षम करें।

+0

कूल, यह कमाल है! –

+5

@ जोसेफविक्टर [न्यूमेरिक प्रीलूड] (http://www.haskell.org/haskellwiki/Numeric_Prelude) को भी देखें। आप जो भी चाहते हैं वह आपको मिल सकता है। – dave4420

+1

यह भी कूलर है (मूल रूप से, बिल्कुल जो मैं लिख रहा हूं!) –

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

  • कोई संबंधित समस्या नहीं^_^