Вот простой пример:
Пусть имеем такой модуль:
Код:
module TestRec (
SomeRecord(Public),
test
) where
data SomeRecord = Public { a:: Int, b:: Char }
| Private { a:: Int, b:: Char, c::String }
instance Show SomeRecord where
show rec = "SomeRecord { a = " ++ show (a rec) ++ ", b = " ++ show (b rec) ++ " }"
test rec = Private (1 + a rec) 'b' "Hidden field"
Импортируем его из другого модуля:
Код:
module Main where
import qualified TestRec
rec1 = TestRec.Public 1 'a'
rec2 = TestRec.test rec1
main = do
print rec1
print rec2
Как и следовало ожидать, на экран выводится вот это:
Код:
SomeRecord { a = 1, b = 'a' }
SomeRecord { a = 2, b = 'b' }