मुझे नहीं लगता कि यह एक बग है, हालांकि यह भ्रमित लगता है, लेकिन यह संकलक उपरोक्त मूल्य बाध्यकारी को संकलित करता है।
धारा 14.6.3 कहा गया है कि यदि मान परिभाषा एकल मान पैटर्न (मामले यहाँ है के रूप में) नहीं है, सविस्तार अभिव्यक्ति
tmp <typars1… typarsn> = expr
ident1 <typars1> = expr1
…
identn <typarsn> = exprn
जहां tmp एक ताजा पहचानकर्ता और से प्रत्येक expri परिणाम है इनपुट टीएमपी के खिलाफ पैटर्न पेट (§7) का संकलन [spec से]।
क्या संकलक करता है देखने के लिए, हम एक एफ # उद्धरण, जैसे इस्तेमाल कर सकते हैं:
Let (test,
Lambda (tupledArg,
Let (x, TupleGet (tupledArg, 0),
Let (_arg1, TupleGet (tupledArg, 1),
Let (x, PropertyGet (Some (_arg1), A, []), x)))),
Application (test, NewTuple (Value (3), NewRecord (foo, Value (5)))))
यही वजह है कि हम है:
<@ let test (x:int, {A = x:int})= x in test (3, {A = 5}) @>;;
स्ट्रिंग प्रारूप में मैं (कुछ सामान बाहर छोड़कर) हो "आंतरिक" एक्स प्राप्त करें।
मुझे नहीं लगता कि यह एक बग है लेकिन शायद यह अधिक संगत होगा यदि यह चेतावनी उत्पन्न करेगा।
सरल उदाहरण - 'परीक्षण (x, (x, y)) = 1' –
सुनिश्चित नहीं है कि इस प्रश्न को डाउनवोट क्यों मिला - यह मेरे लिए एक दिलचस्प समस्या की तरह दिखता है! मुझे लगता है कि यह एक बग है और आप _microsoft_ dot _com_ पर _fsbugs_ पर ईमेल भेजकर इसकी रिपोर्ट कर सकते हैं। –
यह सुनिश्चित नहीं है कि यह एक बग है - यह तर्कसंगत रूप से निम्नतम परिभाषित एक्स को बाध्यकारी द्वारा स्कॉइंग नियमों का पालन करने के बाद तर्कसंगत है। – plinth