2014-10-17 5 views
25

उत्पादन के लिएक्या बैश और आउटपुट से स्टडआउट तक सीधे हास्केल कोड का आह्वान करना संभव है?

main = print "Hello World"

बैश से

सीधे जैसी आसान हास्केल एक लाइनर stdout करना संभव है? आला php -r 'echo "Hello World\n";'

कुछ मैं ghc विकल्पों में चारों ओर poked लेकिन मैं कुछ भी है कि मुझे मदद मिलेगी नहीं देखा।

बस कुछ और परीक्षण किया था, यह भी काम करता है::

उत्तर

24

मुझे लगता है मैं यह समझ से बाहर from here

$ ghc -e "interact (unlines.map reverse.lines)" 
hello 
olleh 

अद्यतन लगता है

echo "hi" | ghc -e "interact (unlines.map reverse.lines)" 
// prints "ih" 
11

पर विचार करें runhaskell आदेश जो पाइप stdin ले जा सकते हैं, उदाहरण के लिए,

echo 'main = print "Hello World"' | runhaskell 

अद्यतन

सामान्य आप कर सकते हैं स्क्रिप्ट हास्केल स्रोत के रूप में इस में,

#!/usr/bin/env runhaskell 

main = putStrLn "Hello World" 

यह वास्तव में संकलित करता है तथा कार्यक्रम कार्यान्वित करता है, जबकि ghc -e एक अभिव्यक्ति का मूल्यांकन करेंगे।

+0

बस कोशिश की और यह 'ghc -e' की तुलना में सुपर हेला धीमी गति से चल रहा है, मुझे आश्चर्य है कि ऐसा क्यों है? 'मुख्य = प्रिंट" हैलो "| ghh -e का उपयोग करते हुए 'ghc -e' 'हैलो' ''' 207s' –

+0

' की तुलना में मैंने 'टाइम' के साथ बेंचमार्क किया, 'रनकस्केल' ने 'टाइम' के साथ बेंचमार्क किया। ghci -e भी लोड करता है .ghci config लेकिन runhaskell नहीं करता है। – Shanthakumar

+0

@ जो क्रॉफर्डी सच, नोट अपडेट करें ... – elm

9

आपको ghc -e स्वयं मिला। यहाँ कुछ उपयोगी उपनाम कि उस के साथ अच्छी तरह से जाना कर रहे हैं:

function hmap { ghc -e "interact ($*)"; } 
function hmapl { hmap "unlines.($*).lines" ; } 
function hmapw { hmapl "map (unwords.($*).words)" ; } 

(मेरा यह old blog post में चर्चा।)

2

मैं एडी (https://eddie.googlecode.com/) लिखा था "-e" की तुलना में अधिक सुविधाएं प्रदान करने के लिए। जुड़े हुए पृष्ठ से:

जब फ़ाइल तर्क दिया, एडी अपने कार्य करने के लिए उन्हें फ़ीड:

एडी शेल पटकथा लेखन आसान के लिए उपयोग करने के लिए सुविधाएं शामिल हैं। एडी आसानी से आपके द्वारा उपयोग किए जाने वाले नामस्थान में मॉड्यूल जोड़ सकता है। एडी के पास एक समय में एक पंक्ति या फ़ाइल को संसाधित करने के विकल्प हैं। एडी पूछे जाने पर बाइनरी फ़ाइल आईओ विधियों का उपयोग करेगा।

चेतावनी दीजिये कि एडी मेरा पहला "असली" हैकेल एप्लिकेशन था, और इसे फिर से लिखने की आवश्यकता है।

संबंधित मुद्दे

 संबंधित मुद्दे