2014-06-20 48 views
0

我在NDOblig.hs中定義了一個data Teorema,我需要隱藏構造函數使其成爲一個抽象類型。隱藏在Haskell中使用模塊的構造函數

我知道該怎麼做使用不同的開發文件和Main.hs導入模塊NDOblig這個樣子:

module Main where 

import NDOblig 

但是,有沒有使得它在同一雜項文件的方法嗎?

這裏是我的代碼部分:

module NDOblig(Var, Form(L,Bot,Impl, And, Or, Not), Teorema, concl, hips, hip, implI, implE, botE, noI, noE, oIi, oId, oE, yI, yEi, yEd) where 

--2 Fórmulas 
type Var = String 
data Form = L Var | Bot | Impl Form Form | And Form Form | Or Form Form | Not Form 
    deriving (Show, Eq) 

--3 Teoremas 
data Teorema = H Form | ImplI Form Teorema | ImplE Teorema Teorema | BotE Form Teorema | Raa Form Teorema 
| NoI Form Teorema | NoE Teorema Teorema | OIi Form Teorema | OId Form Teorema | OE Teorema Teorema Teorema 
| YI Teorema Teorema | YEi Teorema | YEd Teorema 
    deriving (Show, Eq) 

感謝您幫助

回答

2

都能跟得上,將隱藏構造唯一的辦法是拒絕以出​​口爲主,所以你至少需要一個模塊邊界拒絕出口他們!

+1

從實際的角度來看,您可能只是有一個構造函數名稱,只要您嘗試輸入它,然後放棄並使用智能構造函數,您就會感到太累了... –

+0

構造函數名稱有多長可以我奇怪... –

+0

看起來不是... –

相關問題