मैं एक एस-अभिव्यक्ति एक चल कॉमन लिस्प कार्यक्रम में एक फ़ाइल में संग्रहीत में पढ़ने के लिए चाहते हैं, तो मैं निम्नलिखित है:क्लोजर: सामान्य लिस्प पढ़ने समारोह के बराबर?
(defun load-file (filename)
"Loads data corresponding to a s-expression in file with name FILENAME."
(with-open-file (stream filename)
(read stream)))
, उदाहरण के लिए, मुझे लगता है कि एस शामिल foo.txt
नाम की एक फ़ाइल है -expression (1 2 3)
, ऊपर समारोह है कि एस-अभिव्यक्ति वापस आ जाएगी इस प्रकार कहा जाता है, तो: (load-file "foo.txt")
।
मैं खोज किया गया है और खोज और Clojure में एक समान रूप से सुरुचिपूर्ण समाधान नहीं मिली है। कोई विचार?
धन्यवाद!
हाय, क्या लाभ, यदि कोई हो, (पठन-स्ट्रिंग से अधिक इस दृष्टिकोण का है (slurp "foo.txt")) – jkndrkn
'slurp' /' कब/slurp * ', में फ़ाइल की पूरी सामग्री slurp भी' हालांकि पढ़ने के लिए स्ट्रिंग' केवल एक पूरे फार्म पढ़ सकते हैं और बाकी को छोड़ देगा। 'इन-इन-रीडर' दृष्टिकोण पहले फॉर्म (बफरिंग के कारण) से थोड़ा सा पढ़ेगा। इसके अलावा, आप 'इन-इन-रीडर' के शरीर में अधिक रूप ले सकते हैं; विशेष रूप से, उसी 'इन-इन-रीडर' फॉर्म के भीतर 'रीड' के बाद के आमंत्रण फ़ाइल से आगे के फॉर्म लौटाएंगे। (प्रारंभिक दो रूपों को प्राप्त करने के लिए '[(पढ़ें) (पढ़ें)]' का उपयोग करने का प्रयास करें।) मैंने इसके बारे में आपके उत्तर को पोस्ट किया होगा, हालांकि मैंने इसके बारे में सोचा था। :-) –