Julians,

I have a question about the construction of the type Expr.
I would like to create a macro to generate types.

julia> a = :(type FooBar{T<:Number}
                             a::T
                             b::T
                            end)
:(type FooBar{T<:Number} # line 2:
        a::T # line 3:
        b::T
    end)

julia> dump(a)
Expr
  head: Symbol type
  args: Array(Any,(3,))
    1: Bool true
    2: Expr
      head: Symbol curly
      args: Array(Any,(2,))
        1: Symbol FooBar
        2: Expr
          head: Symbol <:
          args: Array(Any,(2,))
          typ: Any
      typ: Any
    3: Expr
      head: Symbol block
      args: Array(Any,(4,))
        1: LineNumberNode
          line: Int64 2
        2: Expr
          head: Symbol ::
          args: Array(Any,(2,))
          typ: Any
        3: LineNumberNode
          line: Int64 3
        4: Expr
          head: Symbol ::
          args: Array(Any,(2,))
          typ: Any
      typ: Any
  typ: Any

My first question is why is args[1] = true?
Why can I not see a::T and b::T or the T<:Number?

I'm inclined to think this is bad form to generate types in macros. I am
trying to create a package for bounding boxes. I'd like to do something
like
   @boundingbox BoundsXYZ, "x", "y", "z"
and get the type and method definitions.

Reply via email to