# Why @doc does not work inside a function?

**URL:** https://discourse.julialang.org/t/why-doc-does-not-work-inside-a-function/17358
**Category:** General Usage
**Created:** [November 9, 2018, 5:25pm UTC](https://discourse.julialang.org/t/why-doc-does-not-work-inside-a-function/17358 "2018-11-09T17:25:39Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)
#### Post date: [November 9, 2018, 5:25pm UTC](https://discourse.julialang.org/t/why-doc-does-not-work-inside-a-function/17358/1 "2018-11-09T17:25:39Z")

</div>

```julia
using Markdown
function doc(fun)
       @show(html(@doc(fun)))
end

@doc(sin)
  sin(x)

  Compute sine of x, where x is in radians.

  sin(A::AbstractMatrix)
...

```

```julia
julia> doc(sin)
html(#= REPL[2]:2 =# @doc(fun)) = "<p>No documentation found.</p>\n<p>Binding <code>fun</code> does not exist.</p>\n"
"<p>No documentation found.</p>\n<p>Binding <code>fun</code> does not exist.</p>\n"

```

---

<div class="post-metadata">

### Author: ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)
#### Post date: [November 10, 2018, 1:25pm UTC](https://discourse.julialang.org/t/why-doc-does-not-work-inside-a-function/17358/2 "2018-11-10T13:25:55Z")

</div>

Shall I open an issue with this?

---

<div class="post-metadata">

### Author: ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)
#### Post date: [November 10, 2018, 3:06pm UTC](https://discourse.julialang.org/t/why-doc-does-not-work-inside-a-function/17358/3 "2018-11-10T15:06:50Z")

</div>

It does what you tell it to:

```julia
julia> @doc(fun)
  No documentation found.

  Binding fun does not exist.

```

---

<div class="post-metadata">

### Author: ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)
#### Post date: [November 10, 2018, 4:27pm UTC](https://discourse.julialang.org/t/why-doc-does-not-work-inside-a-function/17358/4 "2018-11-10T16:27:27Z")

</div>

Hmm, thanks but very trick. So how do I do to capture the output of `@doc` inside a function? And why does `typeof()` sees that `fun` is a variable but `@doc` takes it literally?

```julia
julia> function doc(fun)
       @show(typeof(fun))
       @show(html(@doc(fun)))
       end
doc (generic function with 1 method)

julia> doc(sin)
typeof(fun) = typeof(sin)
html(#= REPL[8]:3 =# @doc(fun)) = "<p>No documentation found.</p>\n<p>Binding <code>fun</code> does not exist.</p>\n"
"<p>No documentation found.</p>\n<p>Binding <code>fun</code> does not exist.</p>\n"

```

---

<div class="post-metadata">

### Author: ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)
#### Post date: [November 10, 2018, 4:42pm UTC](https://discourse.julialang.org/t/why-doc-does-not-work-inside-a-function/17358/5 "2018-11-10T16:42:19Z")

</div>

For the practical side, I solved the problem by calling `Base.Docs.doc(fun)` instead of `@doc(fun)`.

---

<div class="post-metadata">

### Author: ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)
#### Post date: [November 11, 2018, 1:22am UTC](https://discourse.julialang.org/t/why-doc-does-not-work-inside-a-function/17358/6 "2018-11-11T01:22:09Z")

</div>

Macros are “run” at macroexpansion time which is before the function is run. In other words, macros operate on syntax. The correct thing is indeed to use a function here instead of a macro.

---

<div class="post-metadata">

### Author: ![mhmodzoka](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mhmodzoka/32/25582_2.png) [@mhmodzoka](https://discourse.julialang.org/u/mhmodzoka)
#### Post date: [January 4, 2022, 5:39pm UTC](https://discourse.julialang.org/t/why-doc-does-not-work-inside-a-function/17358/7 "2022-01-04T17:39:11Z")

</div>

> [@joa-quim](#):
>
> Base.Docs.doc

Would you please show how to use `Base.Docs.doc(fun)`?
