# Type instability when evaluating prior distributions

**URL:** <https://discourse.julialang.org/t/type-instability-when-evaluating-prior-distributions/19489>\
**Category:** General Usage\
**Created:** [January 10, 2019, 5:22pm UTC](https://discourse.julialang.org/t/type-instability-when-evaluating-prior-distributions/19489 "2019-01-10T17:22:34Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [January 10, 2019, 7:00pm UTC](https://discourse.julialang.org/t/type-instability-when-evaluating-prior-distributions/19489/2 "2019-01-10T19:00:11Z")

</div>

Since `priors` is a vector of heterogeneous elements (`Normal` and `Beta`), it does not have a concrete element type. The quickest fix is probably using tuples, and then I would do the same for `pars`. Eg

```julia
using Distributions
const priors = (Normal(0, 1), Beta(2, 5))
const pars = (2.0, 0.9)

function prioreval_test(priors, pars)
    if all(insupport.(priors, pars))
        log_priorval = sum(logpdf.(priors, pars))
        alarm = false
    else
        log_priorval = -Inf
        alarm = true
    end

    return log_priorval, alarm
end

@code_warntype prioreval_test(priors, pars)

```

That said, I would recommend you use `NamedTuple`s for parameters, which can avoid order mixups.

---

_[View the full topic](https://discourse.julialang.org/t/type-instability-when-evaluating-prior-distributions/19489)._
