[यह सवाल "असली दुनिया हास्केल" में अध्याय 9 से प्रेरित है]
यहाँ एक सरल समारोह (अनिवार्य करने के लिए कटौती) है:
saferOpenFile path = handle (\_ -> return Nothing) $ do
h <- openFile path ReadMode
return (Just h)
मुझे लगता है कि $
आवश्यकता क्यों है?
को संभालने के लिए दूसरा तर्क एक करते ब्लॉक नहीं है, तो मैं इसे जरूरत नहीं है। निम्नलिखित काम करता है ठीक:
handle (\_ -> putStrLn "Error calculating result") (print x)
जब मैं $
संकलन को दूर करने की कोशिश की असफल रहा। मैं
saferOpenFile path = handle (\_ -> return Nothing) (do
h <- openFile path ReadMode
return (Just h))
मैं समझ सकता हूँ कि, अगर मैं स्पष्ट रूप से कोष्ठक जोड़ने यह काम करने के लिए प्राप्त कर सकते हैं यानी, लेकिन मुझे लगता है मैं उम्मीद कर रहा हूँ कि यह सोचना चाहिए जब हास्केल do
हिट "मैं एक ब्लॉक शुरू कर", और चीजों को तोड़ने के लिए हमें $
को स्पष्ट रूप से रखना नहीं चाहिए।
मैं भी अगली पंक्ति में करते ब्लॉक धक्का, इस तरह के बारे में सोचा:
saferOpenFile path = handle (\_ -> return Nothing)
do
h <- openFile path ReadMode
return (Just h)
लेकिन यह है कि कोष्ठक के बिना या तो काम नहीं करता। यही कारण है कि मुझे confuses, क्योंकि निम्न काम करता है:
add a b = a + b
addSeven b = add 7
b
मुझे यकीन है कि मैं सिर्फ बिंदु जहां मैं "के रूप में है कि बस यह सब कैसे कर मुहावरेदार हास्केल लिखने" इसे स्वीकार पहुँचेंगे हूँ, लेकिन किसी को भी किसी भी परिप्रेक्ष्य देने के लिए है ? अग्रिम में धन्यवाद।
क्षमा करें, दोस्तों, मुझे स्टैक ओवरफ्लो बहुत अच्छी तरह से पता नहीं है। कोड सिर्फ कचरा है। (क्यों कोई "पूर्वावलोकन प्रश्न" नहीं है)। मैं इसे फिर से पोस्ट करने की कोशिश करूंगा। – Jonathan
संपादक टूलबार पर बस "कोड" बटन दबाएं (यह ब्रेसिज़ की एक जोड़ी जैसा दिखता है)। साथ ही, पूर्वावलोकन सही समय में अपडेट किया गया है, वास्तविक समय में अपडेट किया गया है ... – Jon
आह, नोस्क्रिप्ट को एक और डोमेन की अनुमति देने की आवश्यकता है! यह अभी ठीक दिखता है। धन्यवाद, जॉन! – Jonathan