Hi Ismael,
Just trying to learn from this thread, on both Julia 0.4.2 and 0.5 I get an
error in the 2nd version of the macro:
julia> ≔(var, block) = @eval $var = $block
≔ (generic function with 1 method)
julia>
julia> @show :foo ≔ "some foo"; foo
:foo ≔ "some foo" = "some foo"
"some foo"
julia> @show :foo ≔ 42; foo
:foo ≔ 42 = 42
42
julia>
julia> macro ≔(v, b)
e = Expr(:global, v)
:($e; $(esc(v)) = $(esc(b)))
end
@≔ (macro with 1 method)
julia>
julia> @≔ foo :FOOL
:FOOL
julia>
julia> @≔ fooled :FOOLED; fooled
:FOOLED
julia>
julia> macro ≔(v, b)
e = Expr(:global, v)
:(global $e; $(esc(v)) = $(esc(b)))
end
@≔ (macro with 1 method)
julia>
julia> @≔ bar "some bar"; bar
ERROR: syntax: invalid syntax in "global" declaration
in eval at ./boot.jl:265
julia>
julia> @≔ bar 19; bar
ERROR: syntax: invalid syntax in "global" declaration
in eval at ./boot.jl:265
julia>
julia> versioninfo()
Julia Version 0.5.0-dev+2021
Commit bc1c18e (2016-01-06 17:45 UTC)
Platform Info:
System: Darwin (x86_64-apple-darwin15.3.0)
CPU: Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz
WORD_SIZE: 64
BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
LAPACK: libopenblas64_
LIBM: libopenlibm
LLVM: libLLVM-3.3
In addition to the ‘end’ line, is something else needed to make exporting to
the global environment work?
Regards,
Rob
> On Jan 5, 2016, at 03:53, Ismael Venegas Castelló <[email protected]>
> wrote:
>
> You could use another similar operator like \coloneq:
>
> julia> ≔(var, block) = @eval $var = $block
> ≔ (generic function with 1 method)
>
> julia> @show :foo ≔ "some foo"; foo
> :foo ≔ "some foo" = "some foo"
> "some foo"
>
> julia> @show :foo ≔ 42; foo
> :foo ≔ 42 = 42
> 42
>
> julia> macro ≔(v, b)
> e = Expr(:global, v)
> :($e; $(esc(v)) = $(esc(b)))
> end
>
> julia> @≔ foo :FOO
> :FOO
>
> julia> @≔ foo :FOO; foo
> :FOO
>
> julia> macro ≔(v, b)
> e = Expr(:global, v)
> :(global $e; $(esc(v)) = $(esc(b)))
>
> julia> @≔ bar "some bar"; bar
> "some bar"
>
> julia> @≔ bar 7; bar
> 7
>
>
>
> El martes, 5 de enero de 2016, 3:18:07 (UTC-6), Julia Tylors escribió:
> Hi,
>
> How can i override the = operator?
>
> Thanks
>
> function ={T}(x::T,y::T)
> ...
> end
>
> didn't work
>
> Thanks