# Take action based on Distribution type in a type stable way?

**URL:** <https://discourse.julialang.org/t/take-action-based-on-distribution-type-in-a-type-stable-way/11487>\
**Category:** Performance\
**Created:** [June 6, 2018, 8:43pm UTC](https://discourse.julialang.org/t/take-action-based-on-distribution-type-in-a-type-stable-way/11487 "2018-06-06T20:43:47Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![gabrielgellner](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gabrielgellner/32/75_2.png) [@gabrielgellner](https://discourse.julialang.org/u/gabrielgellner)\
**Post date:** [June 6, 2018, 8:43pm UTC](https://discourse.julialang.org/t/take-action-based-on-distribution-type-in-a-type-stable-way/11487/1 "2018-06-06T20:43:47Z")

</div>

I want to make a function that transforms some information given what kind of `Distributions` type a variable has. Something like:

```julia
tdist = typeof(prob.dist)
if tdist == Distributions.Gamma{Float64}
    par_transform[i] = exp(par)
elseif tdist == Distributions.Beta{Float64}
    par_transform[i] = logistic(par)
end

```

where `prob.par` is a float, and `prob.dist` is a Distributions type. The above works, but clearly is not type stable as `tdist` changes as I loop over an array of different distributions types. Is there a proper idiom for doing this kind of transformation? Or is this way the natural way?

---

<div class="post-metadata">

**Author:** ![simonbyrne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simonbyrne/32/19_2.png) [@simonbyrne](https://discourse.julialang.org/u/simonbyrne)\
**Post date:** [June 6, 2018, 10:05pm UTC](https://discourse.julialang.org/t/take-action-based-on-distribution-type-in-a-type-stable-way/11487/2 "2018-06-06T22:05:28Z")

</div>

define an auxilliary function:

```julia
transform(prob::Gamma, par) = exp(par)
transform(prob::Beta, par) = logistic(par)

```

then in your code

```julia
par_transform[i] = transform(prob, par)

```

---

<div class="post-metadata">

**Author:** ![gabrielgellner](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gabrielgellner/32/75_2.png) [@gabrielgellner](https://discourse.julialang.org/u/gabrielgellner)\
**Post date:** [June 7, 2018, 1:43am UTC](https://discourse.julialang.org/t/take-action-based-on-distribution-type-in-a-type-stable-way/11487/3 "2018-06-07T01:43:59Z")

</div>

Thank you so much … man my brain always forgets to actually use the key feature of Julia 😉
