Thanks for the explanation Bill,

Since the shapes do differ depending on the range of the int for 7 u: int,

    $ 7 u: 3101
1
   $ 7 u: 128512
2
 
I am guessing that the rank is what needs to be consistent.

   # $ 7 u: 3101
1
   # $ 7 u: 128512
1

and your choices accomplish this. 

Cheers, bob

> On Apr 1, 2017, at 6:57 PM, bill lam <[email protected]> wrote:
> 
> That may be done, but I fear the shape will be inconsistent,
> 7 u: char atom => atom
> 7 u: lit2 atom => atom
> but 7 u: int atom => atom or list depending on range of int.
> 
> In general J expects shape of result to be consistent for working of
> automatic assembly of results and rank conjunction.
> 
> Having shape of 7 u: int to be rank-1 need not be the best choice, it is
> still better than dependence of range of int.
> 
> 4 u: int is different, its argument is always restricted in range, and
> within this range, atomic result is guaranteed.
> 
> 
> 
> 
> On 2 Apr, 2017 9:30 am, "robert therriault" <[email protected]> wrote:
> 
> Thanks Bill,
> 
> You are right I was confusing U16 with literal2. Part of the reason for that
> is that,
> 
>    datatype 7 u: 3101
> unicode
>   datatype 4 u: 3101
> unicode
>   datatype  u: 3101
> unicode
> 
> I guess that there is not really a way to distinguish the fact that 7 u:
> 3101 returns
> U16 instead of literal2 without inventing a separate J datatype. It is nice
> that this
> allows the 7 u: to deal with unicode4 arguments rather seamlessly.
> 
>    datatype 9 u: 128512
> unicode4
>    7 u: 128512
> 😀
>    datatype 7 u: 128512
> unicode
>   3 u: 7 u: 128512
> 55357 56832
> 
> But I do wonder if since
> 
>    7 u: 3101
> ఝ
>   {. 7 u: 3101
> ఝ
>   $ {. 7 u: 3101
> 
>   # $ {. 7 u: 3101
> 0
> 
> Could the single non-surrogate U16 act a bit more like the ASCII cases do,
> or would
> that break the U16 by being non-standard?
>    7 u: 'a'
> a
>   $ 7 u: 'a'
> 
>   # $ 7 u: 'a'
> 0
> 
> Cheers, bob
> 
>> On Apr 1, 2017, at 5:54 PM, bill lam <[email protected]> wrote:
>> 
>> the rght argument 30101 is an integer, not literal2.
>> 
>> 7 u: returns utf16 not literal2. utf16 has surrogate pairs so that result
>> must be rank-1. utf16 is not a J data type.
>> 
>> 4 u: returns literal2 (a J data type) in which the concept of surrogate
>> pairs  does not apply. literal2 has atom.
>> 
>> try 7 u: 128512 to confirm the result is a surrogate pair. Also 9 u:
> 128512
>> is a literal4 atom.
>> 
>> pre-j805, 7 u: integer is a domain error, behavior of j805 is
> incompatible.
>> there will be an global parameter to restore the domain error so that it
>> becomes compatible again. the same applies to 8 u: integer.
>> 
>> Pre-j805 only support literal2.
>> Utf16 was first introduced in j805. Your confusion might come from mixing
>> up literal2 and utf16.
>> 
>> On 2 Apr, 2017 12:55 am, "robert therriault" <[email protected]>
> wrote:
>> 
>>    u: 30101
>> 疕
>> datatype u: 30101
>> unicode
>> $ u: 30101
>> 
>> #$ u: 30101
>> 0 NB. unicode (literal2) atom as expected
>> 
>> 4 u: 30101
>> 疕
>> datatype 4 u: 30101
>> unicode
>> $ 4 u: 30101
>> 
>> #$ 4 u: 30101
>> 0 NB. unicode (literal2) atom as expected
>> 
>> 7 u: 30101
>> 疕
>> datatype 7 u: 30101
>> unicode
>> $ 7 u: 30101
>> 1       NB. unicode (literal2) list of length 1 is unexpected
>> #$ 7 u: 30101
>> 1 NB. rank 1 is unexpected
>> 
>> 
>> The dictionary suggests that with a right argument of literal2, then if
> all
>> values <128, convert to ASCII, otherwise as is. [0]
>> I believe that since the argument is > 128 the 'as is' case would apply
> and
>> that no change in shape should occur, but Unicode is a tricky beast and I
>> welcome enlightenment.
>> 
>> Cheers, bob
>> 
>> [0] http://www.jsoftware.com/help/dictionary/duco.htm
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
> 
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to