# Tracking a program and storing information in a data structure

**URL:** <https://discourse.julialang.org/t/tracking-a-program-and-storing-information-in-a-data-structure/129651>\
**Category:** General Usage\
**Tags:** question, package, struct, float\
**Created:** [June 4, 2025, 6:06pm UTC](https://discourse.julialang.org/t/tracking-a-program-and-storing-information-in-a-data-structure/129651 "2025-06-04T18:06:50Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![billyblueberry](https://avatars.discourse-cdn.com/v4/letter/b/ecb155/32.png) [@billyblueberry](https://discourse.julialang.org/u/billyblueberry)\
**Post date:** [June 4, 2025, 6:06pm UTC](https://discourse.julialang.org/t/tracking-a-program-and-storing-information-in-a-data-structure/129651/1 "2025-06-04T18:06:50Z")

</div>

I am relatively new to Julia (\<1 year) and I am developing a tool for tracking floating point addition. I have set up my work as a package, here is a reduced MWE:

```julia
module TestModule

# used for storing information when addition is done
mutable struct Tracking
    lastResult::Float64
    info::String

    Tracking() = new(0, "default message")
end

# overloading of addition, t has default argument in case of none provided
function +(in1::Float64, in2::Float64, t::Tracking = Nothing)
    +(a, b) = Base.:+(a, b)

    t.info = "writing a string to t.info when addition is performed"
    t.lastResult = in1 + in2

    return in1 + in2
end

# run f() and track information in t
function execute(f::Function, t::Tracking)
    +(a, b) = TestModule.:+(a, b, t)
    f()
end

function report(t::Tracking)
    println("final value = ", t.lastResult)
    println(t.info)
end

end

```

The aim is that the user creates an instance of a `Tracking` struct, then runs their program with `execute()` and uses `report()` for feedback. For example I have created a script for testing.

```julia
using TestModule

# create a Tracking instance
tracking = TestModule.Tracking()

# void function that performs whatever we want to do, in this case sum of 1000 rands
function myExperiment()
    n = 1000
    x = rand(n)
    sum = 0
    for k in 1:n
        sum += x[k]
    end
    println(sum)
end

# run and report
TestModule.execute(myExperiment, tracking)
TestModule.report(tracking)

```

I have my `TestModule` package configured, then the second file is a script in a separate file.  
When I run the second file as a script, I want the fields of `tracking` to have changed, however the return is instead:

```julia
505.3979219546986
final value = 0.0
default message

```

The values of `tracking` aren’t being updated. I assume this is normal behaviour, so is there a way I can modify my code in order for the instance of my data structure to be updated as the program runs?
