2012-01-13 20 views
6

मैं अभिव्यक्ति परिभाषा को परिभाषित करने के लिए "let" का उपयोग करने का प्रयास करता हूं, लेकिन मुझे जो भी मिलता है वह त्रुटियां होती है।क्या tryhaskell.org समर्थन परिभाषाओं का समर्थन करता है?

> let double x = x * x 
not an expression: `let double x = x * x' 

क्या कोई विशेष कमांड है जिसका उपयोग करने के लिए मुझे जावास्क्रिप्ट कंपाइलर का उपयोग करना है या नहीं?

+3

यह मजाकिया है कि इस धागे पर हर कोई अब सोचता है कि दोगुना वर्ग के समान ही है;) – Thomas

+2

@ थॉमस: हास्केल को आपकी फैंसी * "मानक अंकगणितीय" * परवाह नहीं है! यह सिर्फ अभिव्यक्तिपूर्ण है! – ehird

उत्तर

9

दरअसल, यह परिभाषाओं का समर्थन नहीं करता है; संभवतः चूंकि यह केवल बुनियादी परिचय के रूप में है, और शायद लाइनों के बीच कोई राज्य बनाए रखता है। जैसा कि hint के उपयोग से निहित है, यह केवल अभिव्यक्तियों का मूल्यांकन करता है। जीएचसीआई के विपरीत, यह आईओ क्रियाओं को निष्पादित करने का प्रयास नहीं करता है (शुक्रिया!), और बस उन्हें प्रिंट करने का प्रयास करता है (जो विफल रहता है, क्योंकि आईओ कार्यों में Show उदाहरण नहीं है)।

हालांकि, आप एक ही पंक्ति पर let square x = x * x in square 42 कर सकते हैं।

वैसे, कोशिश करें Haskell कोई जावास्क्रिप्ट हास्केल कंपाइलर या ऐसा कुछ भी उपयोग नहीं करता है; यह आपके द्वारा इनपुट किए गए अभिव्यक्तियों का मूल्यांकन करने के लिए सर्वर के साथ संचार करता है।

सब कुछ, यह अवधारणा का एक साफ प्रमाण है, और हास्केल में रुचि रखने वाले लोगों को प्राप्त करने के लिए एक महान प्रारंभिक हुक है, लेकिन किसी भी प्रकार के वास्तविक उपयोग के लिए यह कम से कम जीएचसीआई की तुलना में अनुकूल नहीं है।

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