Thank you Jameson.
Dear all
...but I am still stuck. It's like that: the methods I generate by macro
in my module all overload Base functions (cos). If I write a new method
without using a macro, I don't need to export it explicitely (I imagine,
because I am not creating a new _function_). But if my method is macro
generate, it does not export:
module moo
importall Base # need to import Base.cos, Base.sin to add methods to it
export Typ # export all that is to be public - note position of
export statement at top of module :)
type Typ # public, because exported
x
end
cos(a::Typ) = cos(a.x) # add method to base function - this does NOT require
any export out of this module or import by the user
macro makefoo(OP)
return quote
$OP(a::Typ)= $OP(a.x) # add method to base function - fails to export.
Explicit export statement does not help
end
end
@makefoo(sin)
end
importall moo
println(methods(cos)) # 9 methods :) ... I know how to export functions from
a module
println(methods(sin)) # 8 methods :( ... But not if I generated them by macro
Is that difference intentional?
Sorry Stephane, but the code of @deprecated is, after scrutiny, beyond me.
I'll have to take your word for now on the potential evils of exporting macro
generated function. But, then can you suggest a workaround? Can I export the
macro (I failed), and have the macro calls outside the module? I'd like to
keep the module - because it contains a bunch of private functions...
Philippe