# Difficulty with converting a macro to use multiple parameters

**URL:** <https://discourse.julialang.org/t/difficulty-with-converting-a-macro-to-use-multiple-parameters/9810>\
**Category:** General Usage\
**Tags:** macros\
**Created:** [March 19, 2018, 1:58pm UTC](https://discourse.julialang.org/t/difficulty-with-converting-a-macro-to-use-multiple-parameters/9810 "2018-03-19T13:58:27Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![zsoerenm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zsoerenm/32/664_2.png) [@zsoerenm](https://discourse.julialang.org/u/zsoerenm)\
**Post date:** [March 19, 2018, 1:58pm UTC](https://discourse.julialang.org/t/difficulty-with-converting-a-macro-to-use-multiple-parameters/9810/1 "2018-03-19T13:58:27Z")

</div>

I have a simple macro like this:

```julia
macro logit(signal)
        :(subscribe!(a ->@error(@sprintf("Debug %s: ", $(string(signal))), a), $(esc(signal))))
end
using MicroLogging
using ReactiveBasics
as = Signal(0)
@logit as
push!(as, 1)

```

This works quite well.

However, I like to debug multiple signals. I thought sth like this should work:

```julia
macro logit2(signals...)
    for signal in signals
        :(subscribe!(a ->@error(@sprintf("Debug %s: ", $(string(signal))), a), $(esc(signal))))
    end
end
bs = Signal(1)
@logit2 bs bs
push!(bs, 2)

```

But this does not print anything. Any suggestions on that?

---

<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:** [March 19, 2018, 2:00pm UTC](https://discourse.julialang.org/t/difficulty-with-converting-a-macro-to-use-multiple-parameters/9810/2 "2018-03-19T14:00:32Z")

</div>

You are not returning anything from the macro. Remember that a macro is something that takes syntax and returns new syntax. You need to create e.g. an `Expr(:block)` and `push!` your expressions that you generate into the loop onto its `args` field and then return that block expression.

---

<div class="post-metadata">

**Author:** ![zsoerenm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zsoerenm/32/664_2.png) [@zsoerenm](https://discourse.julialang.org/u/zsoerenm)\
**Post date:** [March 19, 2018, 2:19pm UTC](https://discourse.julialang.org/t/difficulty-with-converting-a-macro-to-use-multiple-parameters/9810/3 "2018-03-19T14:19:49Z")

</div>

Thanks, that did the trick.  
Just for reference, this what I got now:

```julia
macro logit2(signals...)
    block_exp = Expr(:block)
    for signal in signals
        push!(block_exp.args, :(subscribe!(a ->@error(@sprintf("Debug %s: ", $(string(signal))), a), $(esc(signal)))))
    end
    block_exp
end

```
