Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a short discussion of string concatenation to the FAQ. #24487

Merged
merged 4 commits into from
Oct 18, 2018
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions doc/src/manual/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -593,6 +593,12 @@ julia> remotecall_fetch(anon_bar, 2)
1
```

### Why does Julia use "*" for string concatenation? Why not "+" or something else?
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can use code formatting in headings, so maybe update "*" -> `*` and likewise for +?


The [main argument](@ref man-concatenation) against `+` is that string concatenation is not commutative, while `+` is generally used as a commutative operator. While the Julia community recognizes that other languages use different operators and `*` may be unfamiliar for some users, syntax choices always have a subjective element and further discussions about this operator have not turned out to be productive, so it is not likely to change in the short run.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The nature of the discussion around the operator is not really relevant here. This reads a bit passive-aggressive to me.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry about that, English is not my first language. The intent was to convey the idea that the question has been given due consideration.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wish something like this had been merged into the docs - my colleague and I were wondering why such an awkward operator was being used for string concatenation, and at least this provides the rationale. I mean, it still doesn't really make sense to me since * is generally used for multiplication which is also a commutative operation (between scalars).

In any case, I think the first sentence of that explanation is great and would make a valuable addition to the docs i.e.

Why does Julia use "*" for string concatenation? Why not "+" or something else?

The [main argument](@ref man-concatenation) against + is that string concatenation is not commutative, while + is generally used as a commutative operator.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe I can reword this. In the past year or so, this issue/discussion came up surprisingly rarely, so the FAQ may not need to address that part.


Note that you can also use `string(...)` to concatenate strings (and other values converted to strings); similarly, `repeat` can be used instead of `^` to repeat strings. The [interpolation syntax](@ref string-interpolation) is also useful for constructing strings.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Split up these two lines into multiple ones at around ~92 chars?


## Packages and Modules

### What is the difference between "using" and "import"?
Expand Down
2 changes: 1 addition & 1 deletion doc/src/manual/strings.md
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@ further discussion of UTF-8 encoding issues, see the section below on [byte arra
The [`transcode`](@ref) function is provided to convert data between the various UTF-xx encodings,
primarily for working with external data and libraries.

## Concatenation
## [Concatenation](@id man-concatenation)

One of the most common and useful string operations is concatenation:

Expand Down