मैं अजगर के साथ ऐसा कर रहा हूं। मुझे लगता है कि यह एक भाषा में आनुवंशिक रूप से शुद्ध कार्यात्मक शैली में लिखना बोझिल है जो इसके लिए डिज़ाइन नहीं किया गया था। उदाहरण के लिए, in_order की दो परिभाषाओं के विपरीत :
def in_order(xs):
for i in range(1,len(xs)):
if xs[i] > xs[i+1]:
return False
return True
inOrder :: (Ord a) => [a] -> Bool
inOrder xs = and $ zipWith (<=) xs (tail xs)
in_order
अजगर में हस्केल का तरीका लिखना दोनों ही क्रिया है (क्योंकि अजगर आवश्यक मुहावरों का अच्छी तरह से समर्थन नहीं करता है) और धीमे (आलस के कारण हास्केल के स्थिर स्थान के बजाय रैखिक स्थान)।
हालाँकि, मुझे कार्यात्मक संगठन के साथ अजगर कार्यक्रम बनाने में सफलता मिली है , और प्रत्येक फ़ंक्शन का एक मुहावरेदार कार्यान्वयन। यह विचार कि यह कार्यक्रम का एक अच्छा तरीका है, वास्तव में मेरे कोडेक प्रोजेक्ट के पीछे थीसिस है । तो, मेरी घटकों कपोल-कल्पना और कार्यों (शुद्ध के साथ चारों ओर उन्मुख होते हैं इंटरफेस ) के बजाय राज्य के साथ वर्गों की तुलना में, उन पर कार्य कर रहा है, और यह एक साथ अच्छी तरह से आ रहा है। वास्तव में, इस तरह से आयोजित कोड, कक्षाओं के साथ आयोजित कोड की तुलना में पुन: उपयोग करने के लिए अधिक लचीला प्रतीत होता है। हालांकि, यह एक व्यक्तिगत पूर्वाग्रह हो सकता है, क्योंकि मैं अभी भी हास्केल भक्त हूं।
तो मैं कहूंगा कि आपके प्रश्न का उत्तर थोड़े है । आपको सोचने में मदद करने के लिए अपनी कार्यात्मक जड़ों का उपयोग करें, लेकिन इसे ज़्यादा मत करो। उदाहरण के लिए। रूबी में आलसी सूचियों का अनुकरण सिर्फ मुहावरे के लिए करना संभवत: इसके लायक होने की तुलना में अधिक परेशानी वाला होगा।