2009-04-12 6 views
9

मैं बस एसएमएल के साथ शुरू कर रहा हूं, और मैं कुछ कोड संशोधित करने की कोशिश कर रहा हूं, इसलिए मैं समझता हूं कि यह क्या कर रहा है (मुझे एक सभ्य एसएमएल/एनजे डीबगर नहीं मिल रहा है, लेकिन यह एक अलग सवाल है)।आप एसएमएल में केस स्टेटमेंट के अंदर कैसे प्रिंट करते हैं?

fun type_check e theta env non_gens = 
    case e of 
    constant_int _ => (integer,theta) 
    | 
    constant_bool _ => (boolean,theta) 
    | ... 

आदि मान लें कि यह constant_int में मान्य कोड एक डेटाप्रकार का हिस्सा पहले से ही घोषित है, मैं कैसे एक प्रिंट बयान मामले को ' "पूर्णांक" रिटर्निंग' कहने के लिए जोड़ सकता हूँ? मैंने कोशिश की:

... 
constant_int _ => (print "returning integer") (integer,theta) 
... 

लेकिन मैं मिलता है:

 
    stdIn:167.22-167.65 Error: operator is not a function [tycon mismatch] 
     operator: unit 
     in expression: 
     (print "returning integer") (integer,theta) 

मुझे लगता है कि मैं सिर्फ समझ नहीं कर रहा हूँ बयान के एक दृश्य, केवल जिनमें से आखिरी वापसी मान के रूप में व्यवहार किया जाना चाहिए निष्पादित करने के लिए कैसे। कोई सलाह?

इसके अलावा, मैं अपना खुद का डेटाटाइप मूल्य कैसे प्रिंट करूं? एसएमएल को पसंद नहीं आया जब मैंने प्रिंटटाइप वैल्यू को प्रिंट() में पास करने की कोशिश की तो मुझे शायद प्रत्येक डेटाटाइप के लिए एक नया प्रिंट फ़ंक्शन बनाना होगा, क्या यह सही है?

उत्तर

20

आप अर्धविरामों का उपयोग करके "केवल बयानों का अनुक्रम निष्पादित कर सकते हैं, जिनमें से केवल अंतिम मूल्य वापसी मूल्य के रूप में माना जाना चाहिए"।

... 
constant_int _ => (print "returning integer"; (integer,theta)) 
... 

इस मामले में, हम कोष्ठक में बयान के अनुक्रम रैप करने के लिए क्योंकि अर्धविराम मामले अभिव्यक्ति की तुलना में कम पूर्वता है की जरूरत है, और यदि ऐसा है तो हम कोष्ठकों नहीं था, यह है कि लगता होगा केस-एक्सप्रेशन अर्धविराम पर समाप्त हुआ, और यह कि पूरे मामले-अभिव्यक्ति अनुक्रम का एक हिस्सा है, जो आप इस मामले में नहीं चाहते हैं।

+0

क्या आपका मतलब उच्च सटीकता नहीं है? – Shuzheng

+2

@nlykkei: नहीं, मेरा मतलब कम प्राथमिकता है। केस अभिव्यक्ति को पहले समूहीकृत किया गया है क्योंकि इसकी उच्च प्राथमिकता है, अर्धविराम छोड़कर, जो कम प्राथमिकता है, बाहरी संरचना है। – newacct

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