Simon,

I have deleted my old implementation of modifyField! and have now switched 
over to your implementation, which is really nice.  Please view the latest 
commit:

https://github.com/StephenVavasis/Modifyfield.jl

It is not quite working yet, and perhaps you can help.  The issue is that 
the macros @modify_field! and @modify_tuple_entry! are not being exported 
by the package even though they are declared for export.  Here is the error 
message.  

julia> include(Pkg.dir("Modifyfield") * "/test_modifyfield.jl")
ERROR: LoadError: UndefVarError: @modify_field! not defined
 in include at boot.jl:252
 in include_from_node1 at loading.jl:133
while loading 
c:\Users\vavasis\Documents\.julia\v0.4\Modifyfield\test_modifyfiel
d.jl, in expression starting on line 11

Oddly, the exporting works fine when I load the package manually (i.e., 
include("c:/.../Modifyfield.jl")) instead of automatically (i.e., 
Pkg.clone("https://github.com/StephenVavasis./Modifyfield.jl";)) . I have 
never written a package with macros before, so perhaps I am making some 
foolish mistake?

Beyond this, I have a few comments/questions:

(1) Although I didn't use it, regarding your suggestion of "eltype" to 
determine the base type of an array: Unfortunately, this does not work in 
general because eltype in general returns the type that comes out of a 
start/done/next loop rather than a getindex call.  For example, 
eltype(Dict{K,V}()) == (K,V)

(2) I did not understand the use of symbol in :call, symbol(x) in the code 
that you provided.  In fact, :call, x works fine because in Julia you can 
call a type to get the constructor.  Am I missing something?

(3) I also did not understand why you put esc around argument x but not v 
in your code snippet.  Based on my (possibly incorrect) understanding of 
esc, it seems like both x and v should be escaped, which is what I have 
implemented.  Perhaps you can clarify this.

(4) Finally, building upon your ingenious code, I also added a 
@modify_tuple_entry! macro to the package.  I'd appreciate your comments on 
that as well.





On Tuesday, June 2, 2015 at 8:16:29 AM UTC-4, Simon Byrne wrote:
>
> On 2 June 2015 at 13:00, David Gold <[email protected] <javascript:>> 
> wrote: 
> > @Simon: why safer? Rather, what is unsafe about calling symbol within 
> the Expr constructor? 
>
> I wasn't quite sure how the scoping worked (i.e. what would happen if 
> the type had not been exported?), but it does seem to be safe. 
>

Reply via email to