2012-07-27 30 views
5

मैं एलवाईएएच से अभ्यास कर रहा हूं।में बाध्यकारी की कमी नहीं है - इसका क्या अर्थ है? यह काम किस प्रकार करता है?

phoneBook.hs फ़ाइल कोड निम्नलिखित शामिल हैं:

phoneBook :: [(String, String)]

उपर्युक्त कोड मैं निम्न त्रुटि हो रही है संकलन करने का प्रयास करते समय:

*Main> :load "/home/optimight/phoneBook.hs" [1 of 1] Compiling Main (/home/optimight/phoneBook.hs, interpreted)

/home/optimight/phoneBook.hs:1:1: The type signature for `phoneBook' lacks an accompanying binding Failed, modules loaded: none.

प्रश्न brano का जवाब और के लिए बाद में टिप्पणी के बाद जोड़ा यह उत्तर: हम ऊपर उल्लिखित प्रकार हस्ताक्षर के लिए कार्यान्वयन कैसे प्रदान करते हैं?

अगर मैं इस जोड़ें:

type phoneBook = [(String, String)]

मैं हो रही है निम्न त्रुटि:

Prelude> :load "/home/optimight/phoneBook.hs" [1 of 1] Compiling Main (/home/optimight/phoneBook.hs, interpreted)

/home/optimight/phoneBook.hs:2:6: Malformed head of type or class declaration: phoneBook Failed, modules loaded: none

उत्तर

6

आप फोनबुक के लिए एक कार्यान्वयन प्रदान करने के लिए की जरूरत है।

phoneBook :: [(String, String)] सिर्फ हस्ताक्षर है।

+0

कार्यान्वयन प्रदान करना अनिवार्य क्यों है? यदि मैं एक हैकेल एप्लिकेशन विकसित कर रहा हूं और यदि फोनबुक इसका हिस्सा है, तो मैं इसमें कभी भी डेटा को बंडल नहीं करूंगा। यह एक खाली फोनबुक होगा। – Optimight

+0

हम इसके लिए कार्यान्वयन कैसे प्रदान करते हैं? – Optimight

+1

@ ऑप्टिमाइट उदा। 'फोनबुक = [] '। जो भी मूल्य आप यहां डालना चुनते हैं वह पूरे कार्यक्रम निष्पादन के दौरान मूल्य होगा। शीर्ष स्तर मान को परिभाषित करने के बजाय, 'फोनबुक' शायद 'राज्य' या 'स्टेटटी' फ़ंक्शन में राज्य का फ़ंक्शन पैरामीटर या (भाग का) होना चाहिए। – dave4420

1

यदि आप एक प्रकार घोषित करना चाहते हैं, तो इसके प्रारंभिक ऊपरी मामले यानी type PhoneBook = [(String, String)] होना चाहिए।

यदि आप कोई फ़ंक्शन घोषित करना चाहते हैं तो आपको या तो इसकी परिभाषा (बाइंडिंग) या इसकी परिभाषा और इसके प्रकार के हस्ताक्षर दोनों प्रदान करने की आवश्यकता है। अपने कोड संकलित करने के लिए कम से कम प्रयास है:

तो फिर तुम प्रकार [(String, String)] उदा के किसी भी मूल्य के साथ undefined जगह ले सकता है [("Person","Number")]