# "Names" packages?

**URL:** <https://discourse.julialang.org/t/names-packages/58981>\
**Category:** Tooling\
**Created:** [April 10, 2021, 2:00pm UTC](https://discourse.julialang.org/t/names-packages/58981 "2021-04-10T14:00:56Z")\
**Posts on this page:** 1\
**Showing post:** 4

<div class="post-metadata">

**Author:** ![jzr](https://avatars.discourse-cdn.com/v4/letter/j/eb9ed0/32.png) [@jzr](https://discourse.julialang.org/u/jzr)\
**Post date:** [April 11, 2021, 1:11am UTC](https://discourse.julialang.org/t/names-packages/58981/4 "2021-04-11T01:11:40Z")

</div>

I am not sure if an undisciplined collection of names, or even a collection of names and associated “general idea” labels, is a good idea. Such a collection risks becoming a source of [type puns](https://discourse.julialang.org/t/meaning-type-piracy-and-method-merging/11003/2) that confuse users and developers about what contracts the functions are supposed to have.

Two methods whose parameters are different abstract types and have no traits in common are, in my opinion, different functions. For example, in [one post](https://discourse.julialang.org/t/what-is-the-difference-between-rand-and-sample/52297/9) @Tamas_Papp said

> [@What is the difference between rand and sample?](https://discourse.julialang.org/t/what-is-the-difference-between-rand-and-sample/52297/11):
>
> I think that `Turing.sample` is OK. It just should not coincide with `StatsBase.sample` , which is a rather pointless pun.

Even within a single package, [two versions](https://discourse.julialang.org/t/sample-nchains-vs-n-chains/50336) of `StatsBase.sample` have parameters `n_chains` and `nchains`. Once multiple packages and dispatch get involved, it’ll be even more confusing.

I think it would be helpful to have declared bounds on what shared parameter names and types or traits a function accepts and returns.

---

_[View the full topic](https://discourse.julialang.org/t/names-packages/58981)._
