# How to do user facing records in 2024

**URL:** <https://discourse.haskell.org/t/how-to-do-user-facing-records-in-2024/9176>\
**Category:** Learn\
**Created:** [March 27, 2024, 10:16pm UTC](https://discourse.haskell.org/t/how-to-do-user-facing-records-in-2024/9176 "2024-03-27T22:16:18Z")\
**Posts on this page:** 1\
**Showing post:** 23

<div class="post-metadata">

**Author:** ![blamario](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/blamario/32/860_2.png) [@blamario](https://discourse.haskell.org/u/blamario)\
**Post date:** [April 10, 2024, 4:39am UTC](https://discourse.haskell.org/t/how-to-do-user-facing-records-in-2024/9176/23 "2024-04-10T04:39:47Z")

</div>

> [@DrewFenwick](#):
>
> When you use DuplicateRecordField do you put all your records into separate modules so selector functions can always be disambiguated by qualified imports

My answer is no. If you expect the qualified imports, you still don’t need to scatter your records across separate modules. The disambiguation requires different module prefixes, not different source modules. So instead of

```haskell
import qualified Library.Record1 as Record1
import qualified Library.Record2 as Record2

```

the user can say

```haskell
import qualified Library(Record1(..)) as Record1
import qualified Library(Record2(..)) as Record2

```

with the same effect.

---

_[View the full topic](https://discourse.haskell.org/t/how-to-do-user-facing-records-in-2024/9176)._
