# Function control flow

**URL:** <https://discourse.julialang.org/t/function-control-flow/39837>\
**Category:** Performance\
**Tags:** question, performance\
**Created:** [May 20, 2020, 2:46pm UTC](https://discourse.julialang.org/t/function-control-flow/39837 "2020-05-20T14:46:12Z")\
**Posts on this page:** 1\
**Showing post:** 6

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [May 20, 2020, 4:03pm UTC](https://discourse.julialang.org/t/function-control-flow/39837/6 "2020-05-20T16:03:50Z")

</div>

> [@Joao\_Barata](#):
>
> I declared all the parameter types in the parameter structure (they are either Float64 or Integers).

`Integer` is an abstract type in Julia (representing any integer type). `Int` is a concrete type.

Note that, while you _do_ need to be sure that fields of data structures are concrete, you _don’t_ need to declare `b::Float64,bp::Float64` etcetera for function arguments. See e.g. [this discussion](https://discourse.julialang.org/t/passing-arrays-with-unspecified-type/39407/2). One of the strengths of Julia is that you can write type-generic code that is still fast, e.g. your function should be able to work with either single or double precision depending on what argument types were passed. (Data structures can be made type-generic without sacrificing performance by using parameterized types.)

---

_[View the full topic](https://discourse.julialang.org/t/function-control-flow/39837)._
