2010-07-31 83 views
3

是否可以重命名當前模塊? 假設我想要介紹左側和右側的數據構造函數,但這些會與Prelude.Left和Right衝突。我不想在任何地方寫MyModule.Left和MyModule.Right,我寧願以某種方式將它重命名爲MyModule,並寫爲M.Left。可能嗎 ?有什麼選擇?重命名當前模塊

回答

1
import qualified YourModule as M 
+0

我自己的左和右是在MyModule的定義,我想那裏使用它們。 – hNewb 2010-07-31 17:26:36

4

達里奧的回答給人做最簡單的方法,但既然你問的替代品,以及,你可能想看看the description of import declarations在Haskell的報告,或瞭解您一個Haskell的the "Loading modules" section

到本地別名一個常見的替代方法(即import qualified SomeModule as X)只是用來掩飾的Prelude函數(或構造函數),如果你知道你將不再需要他們:

import Prelude hiding (Left, Right) 
import MyModule 

您還可以導入的不同部分模塊中不同的方式:一種常見的伎倆是直接,但它的別名導入功能模塊的類型:

import Data.Map (Map) 
import qualified Data.Map as M 

import Data.Set (Set) 
import qualified Data.Set as S 

simpleMap :: Map String Int 
simpleMap = M.singleton "one" 1 

simpleSet :: Set String 
simpleSet = S.singleton "one" 

這使我們能夠同時使用singleton功能,但我們也不必鍵入M.MapS.Set在每個類型的簽名。

0

你只有一個模塊。在這種情況下,它只是隱藏數據構造(左,右)從前奏(這些被定義存在)非常簡單的解決方案:

​​

Alternativly,你可以簡單地導入前奏合格。然後,你必須之前的任何前奏功能/材料/等粘一些信:

module MyModule where 

import qualified Prelude as P