Replacing MATLAB/Octave with Julia

I’d love to move to Julia, but MATLAB/Octave has a feature that is indispensable to me: the echo of each instruction ( unless terminated with a ; )

ax = -0.8
ay = 0.6
bx = 0.7241 etc.

Is there an equivalent way, in Julia, like an echo mode, to get the same result?
Thanks in advance.

Usually you just put @show in front of each line where you want to echo the output.

e.g. running a script

a = 3
b = 4
@show c = sqrt(a^2 + b^2)
@show d = c + 1
x = [a,b,c,d]

prints

c = sqrt(a ^ 2 + b ^ 2) = 5.0
d = c + 1 = 6.0
1 Like

There’s a thread on StackOverflow on this exact topic.

macro echo(code)
    for i in eachindex(code.args)
        typeof(code.args[i]) == LineNumberNode && continue
        code.args[i] = :( display($(esc(code.args[i]))) )
    end
    return code
end
julia> @echo begin
           ax = 2
           ay = 3
           b = ax * ay
       end
2
3
6

Credit: Przemyslaw Szufel

I modified it a bit:

macro echo(code)
       for i in eachindex(code.args)
           typeof(code.args[i]) == LineNumberNode && continue
           code.args[i] = esc(:(@show $(code.args[i])))
       end
       return code
end
julia> @echo begin
           ax = 2
           ay = 3
           b = ax * ay
       end
ax = 2 = 2
ay = 3 = 3
b = ax * ay = 6
6

See which one you prefer.

That being said, most people in Julia use other workflow styles. See also the thread: Best practise: organising code in Julia - #2 by stevengj

If you want to work quasi-interactively and see lots of intermediate outputs, one alternative is to use a Jupyter notebook (IJulia.jl) or Pluto notebook (Pluto.jl) — every code block in its own cell gets a displayed output saved in the notebook, and you can easily go back and edit and view intermediate steps without necessarily re-running the whole thing (though Pluto automatically re-runs all downstream calculations).

2 Likes