# Automatic separating variables when printing

**URL:** https://discourse.julialang.org/t/automatic-separating-variables-when-printing/70993
**Category:** General Usage
**Tags:** io
**Created:** [November 5, 2021, 8:40am UTC](https://discourse.julialang.org/t/automatic-separating-variables-when-printing/70993 "2021-11-05T08:40:26Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![vmuser](https://avatars.discourse-cdn.com/v4/letter/v/f4b2a3/32.png) [@vmuser](https://discourse.julialang.org/u/vmuser)
#### Post date: [November 5, 2021, 8:40am UTC](https://discourse.julialang.org/t/automatic-separating-variables-when-printing/70993/1 "2021-11-05T08:40:26Z")

</div>

One (very minor) thing that bothers me in Julia is that `print` and `println` do not put spaces between the arguments.

So for example `print(1,2,3)` prints `123`. I wrote my own (probably not ideal) function that does it:

```julia
function printlnsep(args...; separator::String = " ")
    println([string(i) * separator for i ∈ args]...)
end

```

but I was wondering if there’s something like this in the standard library? And if not, is there a reason why?

---

<div class="post-metadata">

### Author: ![StevenSiew](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevensiew/32/218393_2.png) [@StevenSiew](https://discourse.julialang.org/u/StevenSiew)
#### Post date: [November 5, 2021, 9:05am UTC](https://discourse.julialang.org/t/automatic-separating-variables-when-printing/70993/2 "2021-11-05T09:05:13Z")

</div>

Can the separator be a newline character?

---

<div class="post-metadata">

### Author: ![vmuser](https://avatars.discourse-cdn.com/v4/letter/v/f4b2a3/32.png) [@vmuser](https://discourse.julialang.org/u/vmuser)
#### Post date: [November 5, 2021, 9:12am UTC](https://discourse.julialang.org/t/automatic-separating-variables-when-printing/70993/3 "2021-11-05T09:12:39Z")

</div>

Sure, it can be any string… Actually I often use it with `separator = "\n"`

---

<div class="post-metadata">

### Author: ![rafael.guerra](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael.guerra/32/216610_2.png) [@rafael.guerra](https://discourse.julialang.org/u/rafael.guerra)
#### Post date: [November 5, 2021, 9:17am UTC](https://discourse.julialang.org/t/automatic-separating-variables-when-printing/70993/4 "2021-11-05T09:17:09Z")

</div>

Would this be OK:

```julia
list = 1, 2, 3
print(join(list, ' '))
1 2 3

```

---

<div class="post-metadata">

### Author: ![vmuser](https://avatars.discourse-cdn.com/v4/letter/v/f4b2a3/32.png) [@vmuser](https://discourse.julialang.org/u/vmuser)
#### Post date: [November 5, 2021, 9:21am UTC](https://discourse.julialang.org/t/automatic-separating-variables-when-printing/70993/5 "2021-11-05T09:21:29Z")

</div>

That’s a nicer way to do it! So something like this:

```julia
function printlnsep(args...; separator::String = " ")
    println(join(args, separator))
end

```

Still I’m wondering why this is not included in Base. Am I the only one who prefers that way of printing?

---

<div class="post-metadata">

### Author: ![albheim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/albheim/32/34660_2.png) [@albheim](https://discourse.julialang.org/u/albheim)
#### Post date: [November 5, 2021, 9:49am UTC](https://discourse.julialang.org/t/automatic-separating-variables-when-printing/70993/6 "2021-11-05T09:49:44Z")

</div>

I think I have used both.

When wanting to print a few variables quickly I usually use `@show var1 var2` which does this very nicely. And if I want more elaborate printing I don’t mind writing it with `join` or string interpolation like `println("First we have $v1 after which $v2 comes")`.

---

<div class="post-metadata">

### Author: ![lmiq](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lmiq/32/18314_2.png) [@lmiq](https://discourse.julialang.org/u/lmiq)
#### Post date: [November 5, 2021, 10:45am UTC](https://discourse.julialang.org/t/automatic-separating-variables-when-printing/70993/7 "2021-11-05T10:45:22Z")

</div>

> [@vmuser](#):
>
> Am I the only one who prefers that way of printing?

No, me too. The default behavior is more general, as removing spaces is harder than adding them. Still, coming from Fortran and having to print numbers all the time, I prefer the Fortran behavior of adding spaces and a new line in the simplest printing command. Something I can live with, though.

---

<div class="post-metadata">

### Author: ![rafael.guerra](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael.guerra/32/216610_2.png) [@rafael.guerra](https://discourse.julialang.org/u/rafael.guerra)
#### Post date: [November 5, 2021, 11:34am UTC](https://discourse.julialang.org/t/automatic-separating-variables-when-printing/70993/8 "2021-11-05T11:34:52Z")

</div>

> [@vmuser](#):
>
> `print(1,2,3)` prints `123`

Just in case, an additional pair of brackets would fix your example:

```julia
print((1,2,3))
(1, 2, 3)

print([1 2 3])
[1 2 3]

```

---

<div class="post-metadata">

### Author: ![vmuser](https://avatars.discourse-cdn.com/v4/letter/v/f4b2a3/32.png) [@vmuser](https://discourse.julialang.org/u/vmuser)
#### Post date: [November 5, 2021, 12:26pm UTC](https://discourse.julialang.org/t/automatic-separating-variables-when-printing/70993/9 "2021-11-05T12:26:03Z")

</div>

I like these solutions a lot. Especially I did not now about string interpolation… 🙂  
Thanks!

---

<div class="post-metadata">

### Author: ![Henrique\_Becker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/henrique_becker/32/15443_2.png) [@Henrique\_Becker](https://discourse.julialang.org/u/Henrique_Becker)
#### Post date: [November 5, 2021, 2:45pm UTC](https://discourse.julialang.org/t/automatic-separating-variables-when-printing/70993/10 "2021-11-05T14:45:45Z")

</div>

I agree with @albheim here, it seems like the wrong tool is being used. If you are printing variables just for debug (or any kind of human assessment), then you probably should be using `@show` instead of `println`. If you are printing variables in a specific format (possibly to be read back by a program), then you do not want for the function to take any liberties with your input.
