Er...

   mat=:((_2{. 1 1,$) $ ])
   $mat i.5 2
5 2 2

... maybe not quite that, at least not for this case?

Thanks,

-- 
Raul

On Fri, Oct 2, 2015 at 9:48 PM, Rob Hodgkinson <[email protected]> wrote:
> Further to Bill’s point Nollaig, your approach using rank fails for a rank 0 
> item …
>
>    $ ,:`]@.(<:@$^:2 fee) fee=:'ab'
> 1 2
>    $ ,:`]@.(<:@$^:2 fee) fee=:,'a'
> 1 1
>    $ ,:`]@.(<:@$^:2 fee) fee=:'a'
>
>
> For this solution maybe better to just use $ rather than ,: as shown (easier 
> to follow and efficient):
>    $(_2{. 1 1,$ fee)$fee=:'ab'
> 1 2
>
> so …
>    mat=:((_2{. 1 1,$) $ ])      NB: Note in the left tine of the fork (_2{. 1 
> 1,$) the argument is supplied by definition of the fork
>    $mat 'ab'
> 1 2
>    $mat ,'a'
> 1 1
>    $mat 'a'
> 1 1
>
> Rob
>
>> On 3 Oct 2015, at 11:28 am, bill lam <[email protected]> wrote:
>>
>> $$ looks like a scalar but is a rank 1 array. use #$ instead.
>> ,:`]@.(<:@#@$) fee=:'ab'
>>
>> the verb
>> ,:`]@.(<:@$^:2 fee) is reduced to  ]  and then run as ] fee
>> On Oct 3, 2015 8:27 AM, "Nollaig MacKenzie" <[email protected]>
>> wrote:
>>
>>>
>>>
>>> I have a variable, fee, which might have shape
>>> N,2  or just 2.  I want a function that converts
>>> fee when it has shape 2 to shape 1 2.
>>>
>>> It seems straightforward: if the rank is 2,
>>> make no change, if 1, apply ,:
>>>
>>> So something like ,:`]@.(<:@$^:2) should
>>> do the trick. Indeed, this works:
>>>
>>>   $ ,:`]@.(<:@$^:2 fee) fee=:'ab'
>>>   1 3
>>>
>>> But when I try to define something to do
>>> what I want, I get lost.
>>>
>>>    ,:`]@.(<:@$^:2) fee=:'ab'
>>>    |rank error
>>>    |       ,:`]@.(<:@$^:2)fee=:'ab'
>>>        ,:`]@.(<:@$^:2 ]) fee=:'ab'
>>>        |domain error
>>>        |       ,:`]@.(<:@$^:2]) fee=:'ab'
>>>            ,:`]@.((<:@$^:2)@: ]) fee=:'ab'
>>>            |rank error
>>>            |       ,:`]@.((<:@$^:2)@:]) fee=:'ab'
>>>
>>>
>>>
>>> (I'll spare you more)
>>>
>>> I must be missing something obvious.
>>>
>>> --
>>> Nollaig MacKenzie
>>> http://www.yorku.ca/nollaig
>>> ----------------------------------------------------------------------
>>> 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