2011-01-22 18 views
5

मैं OCaml के लिए नया हूँ और मैं कोई सुराग नहीं क्यों यह मुझे एक सिंटैक्स त्रुटि दे रहा है है:OCaml सिंटेक्स त्रुटि

type ('nonterminal, 'terminal) pe = 
| Empty 
| T of t 
| N of n 
| Seq of list 
| Choose of list 
| Star of e 
| Not of e;; 

type ('nonterminal, 'terminal) pe_tree = 
| Is_empty 
| Leaf of t 
| Node of (n,tree) 
| Sequence of list 
| Repeat of list 
| Is_not of e;; 

सभी यह कह रहा है वहाँ लाइन पर एक सिंटैक्स त्रुटि है कि 14 वर्ण 0 है -1 (जहां है) और मैं यह नहीं समझ सकता कि क्यों!

उत्तर

8
type ('nonterminal, 'terminal) pe_tree = 
    | Is_empty 
    | Leaf of t 
    | Node of (n * tree) 
    | Sequence of list 
    | Repeat of list 
    | Is_not of e;; 

आप * उपयोग करते हैं, उत्पाद प्रकार को परिभाषित करने के लिए 'a * 'b में के रूप में। यद्यपि शायद अब बहुत महत्वपूर्ण नहीं है, आपको पता होना चाहिए कि Node of 'a * 'b और Node of ('a * 'b) अलग हैं। आप उनके बारे में दो पैरामीटर के साथ एक प्रकार के प्रकार के रूप में सोच सकते हैं, और दूसरा क्रमशः एक पैरामीटर (एक ट्यूपल) के साथ एक प्रकार का प्रकार।

  • आप को परिभाषित करने के Sequence और Repeat क्या की एक सूची रहे हैं की जरूरत है कुछ अन्य बातें कर रहे हैं,।
  • 'nonterminal और 'terminal का उपयोग नहीं किया जाता है; जब तक कि वे प्रेत प्रकार के लिए न हों, जिन्हें मैं संदेह करता हूं, शायद उन्हें हस्ताक्षर के हिस्से में उपयोग किया जाना चाहिए।
+0

धन्यवाद! हालांकि मैं उलझन में हूं, क्योंकि मेरे पास इससे पहले एक और प्रकार की घोषणा है (जिसे मैंने अभी अपने मूल प्रश्न में जोड़ा है) और यह ठीक से संकलित है:/ – robocop

+0

वहां केवल उन प्रकार की परिभाषाएं होनी चाहिए; 't',' e' को अन्य चीजों के साथ परिभाषित नहीं किया गया है, जिसका मैंने उल्लेख किया है। उन परिभाषाओं में से कोई भी संकलित नहीं होना चाहिए जैसा आपने उन्हें प्रदर्शित किया है। – nlucaroni

+0

ओह ठीक है, मैं देखता हूँ। यह अब स्पष्ट है हाहा मुझे नहीं पता कि मुझे इतना परेशानी क्यों हो रही थी - धन्यवाद! – robocop

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