2013-01-12 33 views
16

मैं संस्करण 4 के OCaml उपयोग कर रहा हूँ जब मैं सहभागी कुछ प्रकार को परिभाषित, दुभाषिया प्रिंट बाहर प्रकार की स्ट्रिंग प्रतिनिधित्व इसके तुरंत बाद:इंटरैक्टिव ओकंपल में टाइप जानकारी कैसे प्राप्त करें?

# type foo = Yes | No;;   <-- This is what I entered 
type foo = Yes | No    <-- This is what interpreter bounced 

लेकिन उसके बाद मैं और अधिक परिभाषाओं टाइप करें, कभी कभी मैं देखना चाहता हूँ फिर से प्रकार का पाठ प्रतिनिधित्व।

हास्केल में, मैं ": t foo" टाइप कर सकता हूं।

ओकैल में मैं यह कैसे कर सकता हूं?

+0

यह एक अच्छा सवाल है। जहां तक ​​मुझे पता है, ऐसा करने का कोई तरीका नहीं है। –

+0

दुर्भाग्यपूर्ण। स्पष्ट रूप से अभिव्यक्ति दर्ज करने के बाद दुभाषिया द्वारा उत्सर्जित स्ट्रिंग "संकलन लॉग" की तरह है लेकिन उसके बाद जानकारी खो जाती है .. –

+1

जानकारी निश्चित रूप से खो नहीं जाती है क्योंकि इसे आगे संकलन के लिए आवश्यक है। क्या आपने ओकंपल सूची में पूछा है और क्यों नहीं? –

उत्तर

2

जहाँ तक मुझे पता है, वहाँ वास्तव में OCaml में कोई रास्ता नहीं एक स्ट्रिंग प्रपत्र के तहत प्रकार की जानकारी को पुन: प्राप्त करने के लिए है

आप एक पैटर्न अपने प्रकार से प्रत्येक के लिए मिलान का निर्माण करना होगा

type foo = Yes | No;; 

let getType = function 
    |Yes -> "Yes" 
    |No -> "No"  
    ;; 

let a = Yes;; 
print_string (getType a);; 
7

#typeof "list";; 
type 'a list = [] | :: of 'a * 'a list 

आप दोहरे उद्धरण चिह्नों के अंदर मूल्यों और प्रकार के रख सकते हैं:

utop में आप #typeof निर्देश उपयोग कर सकते हैं 210
let t = [`Hello, `World];; 
#typeof "t";; 
val t : ([> `Hello ] * [> `World ]) list 

पीएस और मर्लिन का उपयोग करने के लिए भी बेहतर समाधान होगा।