2013-07-19 7 views
6

मुझे आरईपीएल में चारों ओर खेलना अच्छा लगता है क्योंकि यह नई चीजों को आजमाने का एक तेज़ और सरल तरीका है। भाषा के कुछ पहलू, जैसा कि आप जानते हैं, मॉड्यूल के विपरीत आरईपीएल में अलग-अलग किया जाता है, बहु-रेखा परिभाषा उनमें से एक है।क्या आरईपीएल में स्थिरता घोषणा को परिभाषित करना संभव है?

अब, मुझे आश्चर्य है कि, और उस स्थिति में, मैं आरईपीएल में ऑपरेटर फिक्स्डिटी घोषित कर सकता हूं। बेवकूफ प्रयास ... आश्चर्य ... काम नहीं करता है।

Prelude> let (f · g) x = f(g(x)) 
Prelude> infixl 7 · 
+2

आपके द्वारा प्रॉम्प्ट पर परिभाषित सामग्री के लिए, 'infixl 7/& /; एफ/एंड/जी = \ एक्स -> एफ (जी एक्स) '। आप कहीं और परिभाषित सामानों के लिए स्थिरता घोषणा नहीं कर सकते हैं, afaik। –

उत्तर

9

आप इस

>>> :{ 
>>> let infixl 7 *** 
>>>  (f *** g) (a,b) = (f a, g b) 
>>> :} 
>>> (negate *** show) (1,2) 
(-1,"2") 

संपादित की तरह बहु लाइन परिभाषाओं का उपयोग स्थिरता घोषणा कर सकते हैं: हालांकि, दिलचस्प है, स्थिरता प्रदर्शित नहीं किया जाता है जब आप समारोह के बारे में GHCi पूछना

>>> :i *** 
(***) :: (a -> a') -> (b -> b') -> (a, b) -> (a', b') 
     -- Defined at <interactive>:10:8 

की तुलना में 210
+0

यह मेरे ghci द्वारा प्रदर्शित किया गया है, 'परिभाषित' रेखा के नीचे। –

+1

वास्तव में फिक्सीटी ghci-7.6 द्वारा प्रदर्शित की जाती है, लेकिन ghci-7.4 द्वारा नहीं। – leftaroundabout

+0

यह प्रकार के परिवारों में प्रकार ऑपरेटरों के लिए काम नहीं प्रतीत होता है। – CMCDragonkai

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