Emarth
Emarth

Reputation: 47

My program in Julia sees syntax error where there is none

I have a problem with this bit of code. Every time I try to run it it says that I have "Unexpected" end. For me everything is on point and I cant figure it out can someone help me find solution? Full error code and program code below.

Program:

function mbisekcji(f, a::Float64, b::Float64, delta::Float64, epsilon::Float64)
    e = b-a
    u = f(a)
    v = f(b)
    err = 0
    iterator = 0

    if sign(u) == sign(v)
        err = 1
        return err
    end

    while true
        e = e/2
        c = a+e
        w = f(c)

        if (norm(e) < delta) || (norm(w) < epsilon)
            return w, f(w), iterator, err
        end

        if sign(w) == sign(u)
            b = c
            v = w
        else
            a = c
            u = w
        end
        iterator++
    end
end

Error:

LoadError: [91msyntax: unexpected "end"[39m
while loading C:\Users\username\Desktop\Study\zad1.jl, in expression starting on line 60
include_string(::String, ::String) at loading.jl:522
include_string(::Module, ::String, ::String) at Compat.jl:84
(::Atom.##112#116{String,String})() at eval.jl:109
withpath(::Atom.##112#116{String,String}, ::String) at utils.jl:30
withpath(::Function, ::String) at eval.jl:38
hideprompt(::Atom.##111#115{String,String}) at repl.jl:67
macro expansion at eval.jl:106 [inlined]
(::Atom.##110#114{Dict{String,Any}})() at task.jl:80

Also, just to make thing easier, line 60 is second end from the back. The one closing while loop.

Upvotes: 2

Views: 1608

Answers (1)

Bogumił Kamiński
Bogumił Kamiński

Reputation: 69949

In order to increment a variable by 1 in Julia you have to write

iterator += 1

Julia does not support ++ to increment a variable.

But, for example, you could define a macro to do almost what you want:

julia> macro ++(x)
           esc(:($x += 1))
       end
@++ (macro with 1 method)

julia> x = 1
1

julia> @++x
2

julia> x
2

Upvotes: 4

Related Questions