Max Alekseyev on Tue, 08 Jul 2014 02:18:14 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: concat([])


Btw:

? [] == 0
%8 = 1
? [] == ""
%9 = 0

Should the latter be also 1?

Regards,
Max




On Mon, Jul 7, 2014 at 8:14 PM, Max Alekseyev <maxale@gmail.com> wrote:
> Hi Jack,
>
> I believe the general purpose of concat() is to concatenate vectors,
> while strings are viewed as a special type of vectors (of characters).
> From this perspective, the default type of concat result is 'vector',
> unless it is specifically asked to concatenate strings (in which case
> result type is 'string').
> That's why I think concat([]) should not be much different from
>
> ? concat([[]])
> %3 = []
>
> Regards,
> Max
>
>
> On Mon, Jul 7, 2014 at 7:23 PM, Jack Brennen <jfb@brennen.net> wrote:
>> Or should it be "" ?
>>
>> "ab" <- concat(["a","b"])
>> "a"  <- concat(["a"])
>> ""   <- concat([])
>>
>> I guess it's ambiguous, so it is rejected?
>>
>> Note that concat() has some serious weirdnesses
>> when you mix strings with other types...
>> This is version 2.5.5 behavior:
>>
>> ? concat(["",1,x,y])
>> %1 = "1xy"
>> ? concat([1,x,y,""])
>> %2 = "[1, x, y]"
>> ? concat([[],x,y,""])
>> %3 = "[x, y]"
>> ? concat([[],x,y,[]])
>> %4 = [x, y]
>> ? concat(["",x,y,[]])
>> %5 = "xy[]"
>>
>> It seems as if it progresses using non-string-based concatenation
>> until it finds a string, at which point it converts the result
>> so far to a string and then continues?
>>
>>
>>
>>
>>
>> On 7/7/2014 3:34 PM, Max Alekseyev wrote:
>>>
>>> ? concat([])
>>>    ***   at top-level: concat([])
>>>    ***                 ^----------
>>>    *** concat: domain error in concat: vector = []
>>>    ***   Break loop: type 'break' to go back to GP prompt
>>>
>>>
>>> Should it simply return [] ?
>>>
>>> Regards,
>>> Max
>>>
>>>
>>>
>>