# Get qualified name expression from value

**URL:** <https://discourse.julialang.org/t/get-qualified-name-expression-from-value/102330>\
**Category:** General Usage\
**Tags:** metaprogramming, modules\
**Created:** [July 31, 2023, 6:50pm UTC](https://discourse.julialang.org/t/get-qualified-name-expression-from-value/102330 "2023-07-31T18:50:02Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![iago-lito](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/iago-lito/32/31924_2.png) [@iago-lito](https://discourse.julialang.org/u/iago-lito)\
**Post date:** [July 31, 2023, 6:50pm UTC](https://discourse.julialang.org/t/get-qualified-name-expression-from-value/102330/1 "2023-07-31T18:50:03Z")

</div>

Given an “item” value, say `v::Union{Type,Function,Module}`. I can easily get its name as a symbolic expression, like:

```julia
julia> nameof(v)
:Item

```

I can also get a string representation with its full-qualified name in the current context, like:

```julia
julia> repr(v)
"Main.Path.Of.Nested.Modules.Item"

```

But can I get this fully qualified name as an _expression_?

```julia
julia> qualified_nameof(v)
:(Main.Path.Of.Nested.Modules.Item)

```

I am aware that I could just:

```julia
qualified_name(v) = Meta.parse(repr(v))

```

… but that’s an unnecessary roundtrip, right?

I also could leverage [`parentmodule`](https://docs.julialang.org/en/v1/base/base/#Base.parentmodule):

```julia
function qualified_name(v)
    name = nameof(v)
    parent = parentmodule(v)
    v === parent && return name # Root reached.
    :($(qualified_name(parent)).$name)
end

```

… but am I not sort of re-inventing something here? Is there a primitive julia function to do this already?
