[erlang-questions] Strings as Lists

Matt Kangas kangas@REDACTED
Tue Feb 19 00:03:59 CET 2008


On Feb 18, 2008, at 10:35 AM, Brian Cully wrote:

> On 18-Feb-2008, at 09:49, Joe Armstrong wrote:
>
>> ~n"...."   turn off quoting
>> ~r"...."    string is a regexp
>> ~x"..."    string is xml
>> ~x/FlunkyStuff ... FunkyStuff  (string is xml terminated by
>> FunkyStuff)
>> ~myExpander/FunkyStuff .... FunckyStuff
>
> 	perl's qr/w/x operators might be worth looking at. They don't
> completely fix the issue, but they work around it by allowing the
> programmer to specify delimiters.



Interesting ideas! For comparison's sake, and food for thought, here's  
how this issue is handled in several other languages:

-----------------------

Perl: per Brian's comment above, and more (~8 variations)
http://perldoc.perl.org/perlop.html#Quote-and-Quote-like-Operators


Python:
http://docs.python.org/ref/strings.html

* single or double-quoted : normal string literals, all escapes  
processed
* Triple-quoted strings ("""example""", '''example''') may contain  
unescaped newlines or quotes
* These may be prefixed by [uU] and/or [rR]
   * u"", U"" = unicode string
   * r"", R"" = raw (regexp) string, not interpreted for escape  
sequences


PHP:
http://www.php.net/manual/en/language.types.string.php

* single-quoted : limited escapes
* double-quoted : all escapes processed, plus variables ($foo) expanded
* "heredoc syntax", ala Perl or Bourne shell


Ruby:
http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_stdtypes.html#S2

* single-quoted : limited escapes
* double-quoted : all escapes processed
* %q or %Q : user-defined delimiter (ala Perl qr/w/x operators)
* "heredoc syntax"

-----------------------

I like Python's approach, because the elements are "stackable": you  
can combine prefixes to say
ur"\u0062\n"
which yields three unicode characters ('LATIN SMALL LETTER B',  
'REVERSE SOLIDUS', 'LATIN SMALL LETTER N'). I also find Python triple- 
quotes to be as useful as "heredocs" in perl/php/ruby/bash, but the  
syntax is simpler.

Cheers,
--Matt

-- 
Matt Kangas
kangas@REDACTED – www.p16blog.com




More information about the erlang-questions mailing list