# Extending builtin functions like ifelse()

**URL:** <https://discourse.julialang.org/t/extending-builtin-functions-like-ifelse/27319>\
**Category:** General Usage\
**Created:** [August 8, 2019, 5:42pm UTC](https://discourse.julialang.org/t/extending-builtin-functions-like-ifelse/27319 "2019-08-08T17:42:09Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![josuagrw](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/josuagrw/32/1015_2.png) [@josuagrw](https://discourse.julialang.org/u/josuagrw)\
**Post date:** [August 8, 2019, 5:42pm UTC](https://discourse.julialang.org/t/extending-builtin-functions-like-ifelse/27319/1 "2019-08-08T17:42:09Z")

</div>

Apparently, it’s currently impossible to extend builtin functions. Is there an effort to change this? Or is there a way around the restriction already?

The issue came up in a [feature request for NumberIntervals.jl](https://github.com/gwater/NumberIntervals.jl/issues/14).

---

<div class="post-metadata">

**Author:** ![yuyichao](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yuyichao/32/20_2.png) [@yuyichao](https://discourse.julialang.org/u/yuyichao)\
**Post date:** [August 8, 2019, 5:54pm UTC](https://discourse.julialang.org/t/extending-builtin-functions-like-ifelse/27319/2 "2019-08-08T17:54:37Z")

</div>

No it doesn’t make much sense to allow that.

What makes sense is to change it to a normal function with a default implementation using a builtin function if overloading is desired.

For `ifelse`, it’s pretty much an eager `?:` and should probably be implemented like that.

---

<div class="post-metadata">

**Author:** ![josuagrw](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/josuagrw/32/1015_2.png) [@josuagrw](https://discourse.julialang.org/u/josuagrw)\
**Post date:** [August 8, 2019, 8:01pm UTC](https://discourse.julialang.org/t/extending-builtin-functions-like-ifelse/27319/3 "2019-08-08T20:01:06Z")

</div>

That’s ok, I’m really only interested in extending `ifelse()` for a three-value logic usecase. Should I open an issue for that in the Julia github?

---

<div class="post-metadata">

**Author:** ![yuyichao](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yuyichao/32/20_2.png) [@yuyichao](https://discourse.julialang.org/u/yuyichao)\
**Post date:** [August 8, 2019, 8:11pm UTC](https://discourse.julialang.org/t/extending-builtin-functions-like-ifelse/27319/4 "2019-08-08T20:11:42Z")

</div>

You can open one about removing the ifelse builtin and replacing it with a branch if you want.

---

<div class="post-metadata">

**Author:** ![josuagrw](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/josuagrw/32/1015_2.png) [@josuagrw](https://discourse.julialang.org/u/josuagrw)\
**Post date:** [August 9, 2019, 10:40am UTC](https://discourse.julialang.org/t/extending-builtin-functions-like-ifelse/27319/5 "2019-08-09T10:40:27Z")

</div>

For reference [make `ifelse` generic · Issue #32844 · JuliaLang/julia · GitHub](https://github.com/JuliaLang/julia/issues/32844)
