2014-06-09 9 views
6

यसोड में मचान साइट Import.hs फ़ाइल उत्पन्न करती है जिसमें निम्न शामिल हैं।यसोड में `आयात के रूप में कुछ आयात करें 'आयात का अर्थ क्या है?

module Import 
    (module Import 
    ) where 

import Prelude as Import 
import Yesod as Import 
-- ... 

इस पैटर्न के लिए क्या है? मेरी समझ यह है कि यह Import.hs पैकेज में आयातित मॉड्यूल से सबकुछ निर्यात करता है, लेकिन क्या module Import where एक ही काम नहीं करेगा? module Import (module Import) where ... के अंदर नेस्टेड module कीवर्ड का अर्थ क्या है?

प्रपत्र "मॉड्यूल एम" के नाम सभी संस्थाओं है कि दोनों के साथ एक अयोग्य नाम "ई" दायरे में हैं के सेट और एक योग्य नाम "मुझे:

उत्तर

9

हास्केल भाषा एक मॉड्यूल निर्यात रिपोर्ट में कहा गया है "। यह सेट खाली हो सकता है।

§5.2 निर्यात सूचियाँ

एक निर्यात सूची संस्थाओं एक मॉड्यूल घोषणा द्वारा निर्यात किए जाने को पहचानती है। एक मॉड्यूल कार्यान्वयन केवल उस इकाई को निर्यात कर सकता है जो यह घोषित करता है, या यह किसी अन्य मॉड्यूल से आयात करता है। यदि निर्यात सूची छोड़ी जाती है, तो मॉड्यूल में परिभाषित सभी मान, प्रकार और वर्ग निर्यात किए जाते हैं, लेकिन आयात किए जाने वाले नहीं।

एक निर्यात सूची में

संस्थाओं इस प्रकार के रूप में नामित किया जा सकता है:

  • ...

  • प्रपत्र "मॉड्यूल एम" ऐसे नाम हैं जो दोनों के साथ एक अयोग्य दायरे में हैं सभी संस्थाओं के सेट नाम "ई" और एक योग्य नाम "मी"। यह सेट खाली हो सकता है।

इसका मतलब यह है की है कि अर्थ:

module Import 
    (module Import 
    ) where 

import Prelude as Import 
import Yesod as Import 
-- ... 

ले कि सभी Prelude और Yesod मॉड्यूल में निहित है और यह निर्यात करने के लिए है।

उसकी बजाय आप क्या प्रस्ताव है:

module Import where 

निर्यात नहीं होगा प्रति उपर्युक्त उद्धरण के रूप में, Prelude और Yesod द्वारा आयातित है: निर्यात सूची छोड़ा गया है

हैं, तो सभी मूल्यों, प्रकार और वर्गों मॉड्यूल में परिभाषित किया गया है, लेकिन उन लोगों को नहीं जिन्हें आयात किया गया है।

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