# Why could this happen?

I used `Expr` to express a very very complicated math expression. I used `println(io,expr)` to put it into a file.
The size of the file is 480KB.
When I opened the file (using vscode,so I’m sure the problem is not here), I found it ended in `-`, with unclosed `(`, by the way there’s no new line.

enviroment:

• windows10
• julia1.6.1

Without knowing what that expression is, it’s kind of impossible to find out.

I’m sorry but it’s too long.

Could you share a working example of the code that generates it?

Can you share how you arrived at that expression? Or maybe upload the code to some third party (e.g. gist.github.com) to not clutter discourse?

``````# does derivation
function der(a::Symbol)
if a==:x
return 1
else
return 0
end
end
function der(a::Int)
return 0
end
function der(a::Expr)
f=a.args[1]
if f==:+
return Expr(:call,:+,der(a.args[2]),der(a.args[3]))
elseif f==:-
return Expr(:call,:-,der(a.args[2]),der(a.args[3]))
elseif f==:*
return Expr(:call,:+,Expr(:call,:*,a.args[2],der(a.args[3])),Expr(:call,:*,der(a.args[2]),a.args[3]))
elseif f==:/
return :(\$(der(a.args[2]))*\$(a.args[3])-\$(a.args[2])*\$(der(a.args[3]))/\$(a.args[3])^2)
elseif f==:ln
return :(\$(der(a.args[2]))/\$(a.args[2]))
elseif f==:^
return :(\$(der(a.args[3]))*(\$(a.args[3])*\$(a.args[2])^(\$(a.args[3])-1)+ln(\$(a.args[2]))*\$(a.args[2])^\$(a.args[3])))
else # can ignore
return Expr(:call,0)
end
end
f=:(x^x^x^x^x^x)
io=open("D:/1.txt","w")
println(io,der(der(der(der(f)))))
``````

I ran the code again and the file stopped at the same place.

Try to add `close(io)` at the end.

Note that it is recommended to let Julia close the file automatically using the `do` block syntax:

``````open("D:/1.txt","w") do io
println(io,der(der(der(der(f)))))
end
``````

``````io = open(...)