2013-02-12 25 views
7

मैं यह पता लगाने की कोशिश कर रहा हूं कि \\ का अर्थ हैस्केल में क्या है?हास्केल में डबल-बैकस्लैश \ का क्या अर्थ है?

मुझे एक प्रोग्राम मिला है जो संकलित होने पर पूरी तरह से चलता है, जिसका अर्थ यह है कि \\ एक अंतर्निहित फ़ंक्शन है, क्योंकि यह प्रोग्राम में कहीं भी परिभाषित नहीं है। हालांकि, जीएचसीआई में, अगर मैं इसे उसी तरीके से उपयोग करने का प्रयास करता हूं, तो मुझे यह कहते हुए एक त्रुटि मिलती है कि यह दायरे में नहीं है।

क्या इसका मतलब प्रत्येक संदर्भ में कुछ खास है?

मेरा कोड यहां है;

module Main where 

import Data.List 

numbersA = [1, 105, 103, 7, 4, 102, 3, 101, 107, 8, 9] 

numbersB = [6, 9, 7, 8, 1, 5, 3, 2, 4] 

type Number = Integer 

type Run = [Number] 

extractRuns :: [Number] -> [Run] 
extractRuns [] = [] 
extractRuns xs = run : extractRuns xs' 
        where run = buildRun (head xs) (tail xs) 
         xs' = xs \\ run 

buildRun :: Number -> [Number] -> Run 
buildRun seed numbers 
    | endRun = [seed] 

    | otherwise = seed : buildRun seed' numbers' 
        where endRun  = successors == [] 
         successors = filter (.#. seed) numbers 
         numbers' = numbers \\ [seed] 
         seed'  = head successors 

(.#.) :: Number -> Number -> Bool 
x .#. y = x /= y && abs (x - y) < 10 

runs = extractRuns numbersA 

main = print runs 
+0

पहले Google को आजमाएं? – Piccolo

+21

पहले [Hoogle] (http://www.haskell.org/hoogle/) आज़माएं? –

+0

मैं हमेशा Google को पहले कोशिश करता हूं ... लेकिन होगल? इसके बारे में कभी नहीं सुना ... धन्यवाद! यह मेरा जवाब है! – CodyBugstein

उत्तर

20

\\list difference operator है। आप इसे जीएचसीआई में उपयोग कर सकते हैं, आपको पहले Data.List आयात करना होगा।

Prelude> :m Data.List 
Prelude Data.List> [1..5]\\[3,4] 
    [1,2,5] 

एक sidenote पर, यही कारण है कि मैं import Data.List की तरह बड़े पैमाने पर आयात से परहेज सुझाव देंगे और अधिक import Data.List ((\\)) तो तुम सिर्फ तुम क्या आयात कर रहे हैं के बारे में जागरूक किया जा सकता है विशिष्ट होना।

+0

ग्रेट स्पष्टीकरण, धन्यवाद! – CodyBugstein

+0

डाउनवॉटर टिप्पणी करने की देखभाल करते हैं? – jozefg

9

यह list difference operation है। यदि आप hoogle का उपयोग करना जानते हैं तो इस तरह की चीजों को चित्रित करना आसान है।

+5

बस इसके बारे में सुना। मैं प्रश्न पोस्ट करने से पहले हमेशा Hoogle से परामर्श लेंगे। धन्यवाद – CodyBugstein

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