Вот простой пример:

Пусть имеем такой модуль:
## Код:
```
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' }
```
