I suppose taste is learned as well. It does feel quite odd that the best
way to define a long string without a note or text wrapping is by being
creative with functions.

This is valid in Python, Julia, and Rust (if you add `let` and a
terminating semi-colon):

my_str = "part1\
part2\
part2"

I don't think it is abnormal to expect or desire this type of functionality
in our favorite language.

On Mon, Jun 2, 2025 at 13:59 Kasper Daniel Hansen <
kasperdanielhan...@gmail.com> wrote:

> Like Tomas, I find the paste0 readability to be **much** better, partly
> because it allows for better indentation (as Tomas pointed out). Perhaps a
> pointless email, but sometimes - for these subjective issues - it is
> worthwhile to point out a difference in opinion.
>
> Best,
> Kasper
>
> On Mon, Jun 2, 2025 at 12:27 PM Tomas Kalibera <tomas.kalib...@gmail.com>
> wrote:
>
>>
>> On 6/2/25 17:37, Josiah Parry wrote:
>> > Tomas,
>> >
>> > Here is a good example of where this functionality would be useful:
>> >
>> https://github.com/R-ArcGIS/arcgislayers/blob/2b29f4c254e7e5a1dadce8d4b0015a70dfae39d4/R/arc-open.R#L19-L56
>> >
>> > In order to prevent R CMD check notes I have to use `paste0()` to
>> > concatenate long URLs. If we were able to use `\` to
>> > separate the string across multiple lines, it would make the solution
>> > much nicer!
>>
>> It may be a matter of taste. To me the current form
>>
>> #' furl <- paste0(
>> #' "https://services3.arcgis.com/ZvidGQkLaDJxRSJ2/arcgis/rest/services/";,
>> #'   "PLACES_LocalData_for_BetterHealth/FeatureServer/0"
>> #' )
>> #'
>>
>> would be actually clearer than say this:
>>
>> #' # FeatureLayer
>> #' furl <-
>> "https://services3.arcgis.com/ZvidGQkLaDJxRSJ2/arcgis/rest/services/\
>> PLACES_LocalData_for_BetterHealth/FeatureServer/0
>> <https://services3.arcgis.com/ZvidGQkLaDJxRSJ2/arcgis/rest/services/%5CPLACES_LocalData_for_BetterHealth/FeatureServer/0>
>> "
>> #'
>>
>> Inside a per-line comment (#), a backslash followed by a newline would
>> probably be disallowed, anyway - e.g. in C it is considered dangerous
>> and is discouraged. And the code resulting from splices is hard to read
>> due to missing indentation. There is also risk of accidentally putting a
>> space after the backslash before the end of line (which some
>> languages/parsers then don't treat as a splice, some do, some issue a
>> warning - of course it is hard to see in the code).
>>
>> The idea of automatically concatenating consecutive string literals as
>> in C would not easily work in R. This is now valid R code:
>>
>> x <- "part1"
>> "part2"
>>
>> if we introduced concatenation, we would change behavior of this code
>> (the value of x would be different, the result of these two lines would
>> be different).
>>
>> I think paste0() is not that bad in the end.
>>
>> Best
>> Tomas
>>
>> > On Mon, Jun 2, 2025 at 3:19 AM Tomas Kalibera
>> > <tomas.kalib...@gmail.com> wrote:
>> >
>> >
>> >     On 5/28/25 04:15, Pavel Krivitsky via R-devel wrote:
>> >     > Dear All,
>> >     >
>> >     > Perhaps this should go in r-package-devel, but I suspect that
>> >     this is
>> >     > going to turn into a feature request, and I want to run it by
>> >     the list
>> >     > before filing it in the Bugzilla.
>> >     >
>> >     > I would like to specify a long string literal without making the
>> >     line
>> >     > of code too long. In R,
>> >     >
>> >     > "abc
>> >     > def"
>> >     >
>> >     > yields the string "abc\def", and, as far as I can tell, there is
>> no
>> >     > mechanism for preventing it from inserting a newline into the
>> >     string.
>> >     >
>> >     > Putting a backslash before the newline, i.e.,
>> >     >
>> >     > "abc\
>> >     > def"
>> >     >
>> >     > eliminates the newline in (that I know of) C/C++, Python, and
>> Julia,
>> >     > but it makes no difference in R.
>> >     >
>> >     > The implicit concatenation of Python and C/C++, e.g., "abc"
>> >     "def", is a
>> >     > syntax error as well in R.
>> >     >
>> >     > It is, of course, possible to use paste0(), but is there a more
>> >     concise
>> >     > built-in mechanism in R of which I am not aware?
>> >     >
>> >     > If not, I think it would make sense to bring R in line with the
>> >     others.
>> >     > Currently, backslash and no backslash before a newline behave
>> >     > identically (at least as far as I can tell), so I doubt that a
>> >     > nontrivial amount of code relies on the current behaviour. [1]
>> >
>> >     What would be real example of a long string literal you would want
>> to
>> >     enter this way?
>> >
>> >     For entering a long text with newlines, one can use raw strings in R
>> >     (see ?Quotes) - but there you would see the newlines and
>> indentation.
>> >     I've seen code where  "paste0" has been aliased to a local function
>> >     named with a single letter to make concatenation more concise.
>> >
>> >     Best
>> >     Tomas
>> >
>> >     >
>> >     >                               Any thoughts?
>> >     >                               Pavel
>> >     >
>> >     > [1] On the off chance that it does, it should easy to check by
>> >     > searching for "\\\n" in package sources, because a backslash
>> >     before a
>> >     > newline is a syntax error outside a string.
>> >     > ______________________________________________
>> >     > R-devel@r-project.org mailing list
>> >     > https://stat.ethz.ch/mailman/listinfo/r-devel
>> >
>> >     ______________________________________________
>> >     R-devel@r-project.org mailing list
>> >     https://stat.ethz.ch/mailman/listinfo/r-devel
>> >
>>
>> ______________________________________________
>> R-devel@r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>
>
> --
> Best,
> Kasper
>

        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to