[erlang-questions] String continuation

Mazen Harake <>
Fri Jan 14 18:14:50 CET 2011


Actually that is exactly the method I used to check the literals. Didn't 
bother to check the other way but it is pretty obvious (when you think 
about it) that the compiler would optimise away that sort of things.

/M

On 13/01/2011 22:47, Ulf Wiger wrote:
> Actually, and you can verify this with erlc -S, they are _all_ the same,
> as Robert said:
>
> f() ->  "a" "b".
>
> g() ->  "ab".
>
> h() ->  "a" ++ "b".
>
> compiles to:
>
> {function, f, 0, 2}.
>    {label,1}.
>      {func_info,{atom,strs},{atom,f},0}.
>    {label,2}.
>      {move,{literal,"ab"},{x,0}}.
>      return.
>
> {function, g, 0, 4}.
>    {label,3}.
>      {func_info,{atom,strs},{atom,g},0}.
>    {label,4}.
>      {move,{literal,"ab"},{x,0}}.
>      return.
>
> {function, h, 0, 6}.
>    {label,5}.
>      {func_info,{atom,strs},{atom,h},0}.
>    {label,6}.
>      {move,{literal,"ab"},{x,0}}.
>      return.
>
> BR,
> Ulf W
>
> On 13 Jan 2011, at 23:23, Mazen Harake wrote:
>
>> I think you are confusing the two. Writing two strings without anything in between is a literal and not a statement of concatenation of both. This means that:
>>
>> f() ->  "Hello" "World".
>>
>> is the same as...
>>
>> f() ->  "HelloWorld".
>>
>> and not
>>
>> f() ->  "Hello" ++ "World".
>>
>>
>> /Mazen
>>
>> On 13/01/2011 18:40, Attila Rajmund Nohl wrote:
>>> Hello!
>>>
>>> Let's have a look at this little example code:
>>>
>>> -module('strc').
>>>
>>> -export([f/0]).
>>>
>>> f() ->
>>>      {["string1",
>>>        "string2"],
>>>       ["string3"
>>>        "string4"]}.
>>>
>>> This compiles fine and returns a tuple with two lists, the first with
>>> 2 strings, the second with a single list. Of course, if there was only
>>> a typo in the second list (a missed comma), I wouldn't notice it until
>>> the code executes (which might happen in an inconvenient time in error
>>> handling code). I wonder that the possibility to omit the extra ++
>>> from the end of "string3" line worth the problems what might be caused
>>> by the missing comma. This only bit me once, so it might not be that
>>> common...
>>>
>>> ________________________________________________________________
>>> erlang-questions (at) erlang.org mailing list.
>>> See http://www.erlang.org/faq.html
>>> To unsubscribe; mailto:
>>>
>>
>> ________________________________________________________________
>> erlang-questions (at) erlang.org mailing list.
>> See http://www.erlang.org/faq.html
>> To unsubscribe; mailto:
>>
> Ulf Wiger, CTO, Erlang Solutions, Ltd.
> http://erlang-solutions.com
>
>
>



More information about the erlang-questions mailing list