# Optional parameter causes type instability

**URL:** https://discourse.julialang.org/t/optional-parameter-causes-type-instability/68768
**Category:** Performance
**Tags:** type-stability
**Created:** [September 26, 2021, 3:17am UTC](https://discourse.julialang.org/t/optional-parameter-causes-type-instability/68768 "2021-09-26T03:17:14Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![Joris\_Pinkse](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joris_pinkse/32/216398_2.png) [@Joris\_Pinkse](https://discourse.julialang.org/u/Joris_Pinkse)
#### Post date: [September 26, 2021, 3:17am UTC](https://discourse.julialang.org/t/optional-parameter-causes-type-instability/68768/1 "2021-09-26T03:17:14Z")

</div>

Using @code\_warntype,

```julia
function f(x::Float64, T=Float64 )
           T(x)
end

```

passes with flying colors, but

```julia
function f(x::Float64; T=Float64)
           T(x)
end

```

causes mayhem. Why?

---

<div class="post-metadata">

### Author: ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)
#### Post date: [September 26, 2021, 3:19am UTC](https://discourse.julialang.org/t/optional-parameter-causes-type-instability/68768/2 "2021-09-26T03:19:50Z")

</div>

second case is not optional parameter and keyword arguments don’t participate in multi-dispatching:  
[https://docs.julialang.org/en/v1/manual/methods/#Note-on-Optional-and-keyword-Arguments](https://docs.julialang.org/en/v1/manual/methods/#Note-on-Optional-and-keyword-Arguments)
