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