Set function name

How can I define a function with a given name?

let fname = :myfunction
    @eval quote
        function $(fname)()
            42
        end
    end
end
UndefVarError: fname not defined

@eval operates in global scope. That’s why it can’t see fname.

EDIT: This is the wrong answer. See below.

IMHO, it’s no coincidence that @eval and @evil sound so similar :wink:

1 Like

Did you mean to write

@eval begin
    function $(fname)()
        42
    end
end

instead of

@eval quote
    function $(fname)()
        42
    end
end

? The former should work just fine.

2 Likes