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