क्या प्रकार के हस्ताक्षरों के बीच अंतर है -> बी -> ए और सी -> ए -> सी?


16

यह प्रश्न हास्केल कार्यों के बारे में एक सैद्धांतिक प्रश्न है जो किसी भी प्रकार के तर्क ले सकता है। क्या प्रकार के हस्ताक्षरों के साथ कार्य करने के तरीके में अंतर है

a -> b -> a 

तथा

c -> a -> c 

त्वरित हैं? किसी भी मदद की सराहना की है।


6
नहीं, आपने बस प्रकार चर का नाम बदल दिया है । जब तक आप एक चर को दूसरे चर (जैसे कि एक नाम का टकराव) का नाम नहीं देते हैं, तब तक कोई समस्या नहीं है।
विल्म वान ओन्सेम

इस पर निर्भर करता है कि प्रकार चर कैसे / कहीं और बंधे हैं।
बरगी

जवाबों:


17

इसमें कोई फर्क नही है। चूंकि a, bऔर लोअरकेस केc साथ शुरू होता है , ये चर हैं । आप चर का नाम बदल सकते हैं, और यह वही रहता है, जब तक कि दो (या अधिक) चर " टकराव " नहीं करते हैं ।

इस तरह की झड़पें तब हो सकती हैं जब आप किसी चर का नाम बदल देते हैं जैसे कि उसका नाम दूसरे चर के समान होता है, या जब आप एक ही नए नाम के लिए दो (या अधिक) चर नाम बदलते हैं। यदि आप अपने पहले कोड के टुकड़े में aउदाहरण के लिए चर का नाम bबदलेंगे, तो हम प्राप्त करेंगे b -> b -> b, लेकिन यह समान नहीं है, तब से हम पहले और दूसरे पैरामीटर को एक ही प्रकार के हैं। जबकि आपके प्रकार के हस्ताक्षर में, हमें दो प्रकार चुनने की स्वतंत्रता है जो समान हो सकते हैं, लेकिन यह आवश्यक नहीं है।


16

नहीं। के a -> b -> aरूप में सोचो This Type -> Another Type -> This Type। फिर दोनों ने दिए गए पैटर्न को फिट किया। हालांकि, a -> b -> cअभ्यस्त फिट की तरह कुछ : This Type -> That Type -> Yet Another Type(आम तौर पर) अलग है; जब c = aआप रुचि रखते हैं, जो पैदावार के किनारे मामले को छोड़कर ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.