2017-11-04 6 views
6

मेरे पास दो पैकेज हैं जो एक ही नाम के साथ मॉड्यूल प्रदान करते हैं। जब मैं मॉड्यूल लोड करने का प्रयास करता हूं तो मुझे एक त्रुटियदि दो मॉड्यूल समान नाम साझा करते हैं तो मुझे क्या करना चाहिए?

के लिए अस्पष्ट इंटरफ़ेस ....: यह कई पैकेजों में पाया गया था।

इसे हल करने के लिए मुझे क्या करना चाहिए?

विशिष्ट होने के लिए, cryptonite पैकेज और crypto-api पैकेज दोनों Crypto.Random नाम के साथ मॉड्यूल प्रदान करते हैं। मैं यह निर्दिष्ट कैसे कर सकता हूं कि मैं कौन सा पैकेज मॉड्यूल को लोड करना चाहता हूं?

उत्तर

7

आप PackageImports भाषा pragma उपयोग कर सकते हैं और स्पष्ट रूप से पैकेज तुम इतनी तरह अपने आयात बयान में मतलब लेने:,

import "cryptonite" Crypto.Random 

वैकल्पिक रूप से, अगर आप दोनों स्थापित किया है, लेकिन उनमें से केवल एक का उपयोग कर रहे आप सूची स्पष्ट रूप से कर सकते थे cabal फ़ाइल में उपयोग की जाने वाली निर्भरताओं और cabal के माध्यम से निर्मित करें।

8

यदि आप ऐसा> = 8.2 और कबाल से स्थापित GHC का उपयोग करने की> = 2.0, एक और विकल्प कबाल फ़ाइल के mixins खंड में परस्पर विरोधी मॉड्यूल का नाम बदलने है:

build-depends:  base >=4.10 && <4.11, 
         cryptonite >= 0.24, 
         crypto-api >= 0.13.2 
    mixins: 
         cryptonite (Crypto.Random as CryptoniteCrypto.Random), 
         crypto-api (Crypto.Random as CryptoAPICrypto.Random) 

आप तो आयात कर सकते हैं का नाम बदला मॉड्यूल: ध्यान में रखना

module Main where 

import CryptoniteCrypto.Random 
import CryptoAPICrypto.Random 

एक बात जब इस तरह का नाम बदलने कि मॉड्यूल है कि स्पष्ट रूप से किया गया है मैं बन का नाम बदला नहीं है naccessible।

वास्तव में, क्षमता मॉड्यूल seems to exist since GHC 7.10-package ध्वज के माध्यम से नाम बदलें, और reexported-मॉड्यूल कबाल अनुभाग के लिए। reexported-modules घोषणा-समय (पैकेज को प्रकाशित करते समय) पर काम करता है जबकि मिक्सिन उपयोग-समय पर (जब पैकेज पर निर्भर करता है) पर काम करता है।

+1

जानना अच्छा है। मैंने दूसरे जवाब को स्वीकार किया जो 'पैकेज आयात' भाषा एक्सटेंशन का उपयोग करने का सुझाव देता है क्योंकि यह मेरी समस्या को बहुत आसानी से हल करता है। लेकिन आपका सुझाव भी एक अच्छा समाधान की तरह लगता है। – user668074

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

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