की सूची के बीच क्या अंतर है, यदि मेरे पास दो सूचियां, एल 1 और एल 2 है, तो मैं निम्नलिखित को पूरा करने की कोशिश कर रहा था, मैं चाहता था कि परिणाम (आर) होना एल 1 से एल 2 का "घटाव"।किसी भी सूची ([_]) और कुछ भी (_)
उदाहरण:
L1 = [1,2,3]
L2 = [2,3,4,5]
R = [1]
मैं यह पूरा करने में सक्षम था, लेकिन मैं नहीं बता सकता कि _
और [_]
के बीच अंतर है।
अगर मैं ऐसा करते हैं:
diferencia([],_,[]).
diferencia([X|Tail],L2,R):-
member(X,L2),
diferencia(Tail,L2,R).
diferencia([X|Tail],L2,[X|R]):-
not(member(X,L2)),
diferencia(Tail,L2,R).
यह काम करता है, अगर मैं ऐसा करते हैं, यह मुझे देता है झूठी:
diferencia([],[_],[]).
diferencia([X|Tail],L2,R):-
member(X,L2),
diferencia(Tail,L2,R).
diferencia([X|Tail],L2,[X|R]):-
not(member(X,L2)),
diferencia(Tail,L2,R).
मैं कुछ भी [_]
युक्त के बाद से एल 2 हमेशा होगा काम करना चाहिए एक सूची ग्रहण करेंगे एक सूची बनें
चर बुलाया 'से मेल नहीं खाएगी _' वास्तव में एक सामान्य चर नहीं है। यदि आपके पास '_' नामक दो चर हैं, तो वे एकजुट नहीं होंगे, वे दो अलग-अलग चर हैं। – svick
सामान्य चर का उपयोग यहां यह इंगित करने के लिए किया गया था कि अनाम चर वे चीजें नहीं कर सकते हैं नियमित रूप से परिवर्तनीय मिलान पैटर्न की बात करते समय नहीं कर सकते हैं। तथ्य यह है कि दो अनाम चर आवश्यक रूप से एकजुट नहीं होते हैं, ऊपर दिए गए उदाहरणों में वैसे भी दिखाए गए थे। वैसे भी स्पष्टीकरण के लिए धन्यवाद! – m09