What if you need to use braces? It seems to me that any syntax for representing long strings needs a terminator that is unlikely to occur within the string itself. For example, Python uses """, and XML CDATA uses ]]>, both of which are character sequences unlikely to turn up in a string. By contrast, an ending brace } is not rare enough to be used as a terminator, IMO.
- James On Oct 11, 10:38 pm, Greg <[email protected]> wrote: > Dear Clojure group and developers, > > In a recent discussion on #clojure it was pointed out that another > language called newLISP has an excellent feature that would be neat to > adopt into clojure, namely its special text delimiters {} and [text][/ > text]. It uses these delimiters to specify verbatim text (i.e. what's > in the parens is *exactly* what the string is, including the newlines). > > This feature makes it incredibly easy to write and include various > bits of text in the language such as example code, html, and it makes > writing regular expressions simple by avoiding the need for some > escapes. > > For example (newLISP code): > > (replace {"quoted" text} my-str {"quoted" string}) > > vs > > (replace "\"quoted\" text" my-str "\"quoted\" string}) > > As this has numerous advantages we discussed how such a construct > could be brought in to the benefit of Clojure, as in Clojure both the > {} and [] characters are reserved. > > The following candidates were considered and rejected for various > reasons: > > <> ; rejected because conflicts with statements like (< x 1) > #"" ; rejected because represents regex > #[] ; rejected because implies some sort of data structure like sets, > > #{} > [t][/t]; rejected because conflicts with arrays > > Finally we agreed that #s{ ... } would make a nice fit, as it fits > nicely with clojure's existing syntax and tendency to use the sharp to > signify a shorthand for something. On irc 'Chousuke' pointed out that > this construct could be used to make it easier to write doc strings > that include sample code for Clojure's functions, but of course there > are many other uses for such a construct (which I should note exists > in many other languages as well, even bash, but I referenced newLISP > as it's also a lisp and has a particularly elegant implementation). > > Any and all input is welcome on this proposal! > > Kind regards and thanks in advance for taking this into consideration, > Greg (irc: itistoday) --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to [email protected] Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---
