आप हास्केल में stdin
संभाल नहीं बदल सकते हैं कुछ होगा। अजगर में, sys.stdin
चर केवल एक हैंडल करने के लिए अंक, इसलिए जब आप यह एक नई फ़ाइल हैंडल के साथ बदलें, पुराने stdin
संभाल अभी भी बना हुआ है, लेकिन sys.stdin
चर अब फ़ाइल संभाल सकते हैं।
System.IO.stdin
हैंडल हैस्सेल में अपरिवर्तनीय है (जैसा कि कई अन्य चर हैं, या मुझे मूल्य कहना चाहिए), आप हास्केल में भी वही काम नहीं कर सकते हैं।
आप क्या कर सकते हैं एक नई संभाल, और उपयोग कि टर्मिनल से पढ़ने के लिए संभाल के साथ /dev/tty
फ़ाइल खोलने के लिए है। आप stdin
पर किसी भी हैंडल पर उसी ऑपरेशन का उपयोग कर सकते हैं। बस System.IO
आयात करें, और हर बार जब आप कुछ इनपुट प्राप्त करने के लिए foo ...
का उपयोग करेंगे, तो इसके बजाय hFoo handle ...
का उपयोग करें।
import System.IO
-- ...
newstdin <- openFile "/dev/tty" ReadMode
-- Instead of normal getLine; just prepend "h" and pass the handle
line <- hGetLine newstdin
मत भूलना hClose
के लिए एक कॉल के साथ अपने नए संभाल बंद करने के लिए: उदाहरण के लिए, टर्मिनल से एक लाइन को पढ़ने के लिए, इस कोड का उपयोग!