Thank you that is perfect.

   2 +:  ( :: (('a' assign 3:) ] [: 13!:12 ('' [ ]))) a=: 0
|domain error
|   2    +:( ::(('a'assign 3:)][:13!:12(''[])))a=:0

   a
3
   +:  ( :: (('a' assign 3:) ] [: 13!:12 ('' [ ]))) a=: 0
0
   a
0


Today I learned that +: actually has a dyadic definition ... doh :)


   1 +:  ( :: (a=:3:)) a=:2
3

With that, here is something maybe useful to the rest of you:

   finallyC =: 2 : 'u :: ((v)][:13!:12(''''[]))'
   1 +:  ( finallyC ('a' assign 3:)) a=: 2
|domain error
|   1    +:(finallyC('a'assign 3:))a=:2

   a
3
    +:  ( finallyC ('a' assign 3:)) a=: 2
4

   +:  finallyC (a=:3:) a=: 2

4
   1 +:  finallyC (a=:3:) a=: 2
|domain error
|   1    +:finallyC(a=:3:)a=:2

   a
3:



----- Original Message -----
From: Henry Rich <[email protected]>
To: [email protected]
Cc: 
Sent: Saturday, September 14, 2013 1:09:55 PM
Subject: Re: [Jgeneral] :: (adverse) weirdness -- was Bug in adverb define

?

Did you mean

    1(+:   :: (a=:3:)) a=:2
3


Re
+:  ( :: (('a' assign 3:) ] 13!:12 ('' [ ]))) a=: 0

    (('a' assign 3:) ] 13!:12 ('' [ ]))
+-------------+---------------------+
|+-+------+--+|+-+----------+------+|
||a|assign|3:|||]|+--+--+--+|++-+-+||
|+-+------+--+|| ||13|!:|12||||[|]|||
|             || |+--+--+--+|++-+-+||
|             |+-+----------+------+|
+-------------+---------------------+

You are executing 13!:12 dyadically, which fails.  Maybe you mean

  (('a' assign 3:) ] [: 13!:12 ('' [ ]))


Henry Rich

On 9/14/2013 12:51 PM, Pascal Jasmin wrote:
>    1+:2
> |domain error
> |   1    +:2
>     1(+:   :: (a=:3:)) a=:0
> 0
>
>     (+:   :: (a=:3:)) a=:0
> 0
>     a
> 3:
>
> still a bug with that one... but the good news:
>
>     2 +:  ( :: ('a' assign 3: [ ])) a=: 0
> 3
>     a
> 3
>     +:  ( :: ('a' assign 3: [ ])) a=: 0
> 0
>     a
> 0
>
> works as hoped... and if it doesn't raise an error then the normal code that 
> would assign the flag runs normally.
> A useful feature suggestion though would be a try. finally. form to make 
> semaphores/mutexes easier/possible.
>
>
>
> It turns out though, that I don't know how to make the above return (or just 
> smoutput/print) any error.  One of my tries:
>
>      +:  ( :: (('a' assign 3:) ] 13!:12 ('' [ ]))) a=: 0
> 0
>     2 +:  ( :: (('a' assign 3:) ] 13!:12 ('' [ ]))) a=: 0
> |domain error
> |   2    +:( ::(('a'assign 3:)]13!:12(''[])))a=:0
>     a
> 0
>
>
>
>
>
>
>
>
> ----- Original Message -----
> From: Henry Rich <[email protected]>
> To: [email protected]
> Cc:
> Sent: Saturday, September 14, 2013 12:19:58 PM
> Subject: Re: [Jgeneral] :: (adverse) weirdness -- was Bug in adverb define
>
>       '' +  ( :: ('a' assign 3: [ ])) a=: 0
>
> You are executing the verb against a cell of fills.  When the execution
> of a verb on a fill-cell fails, the error is quietly ignored, and a
> result of scalar 0 is used to give the shape/type of the result.  Here,
> the error in u causes v not to be executed.
>
> Offhand, this seems questionable: if u fails when u :: v is executed, it
> seems hasty to assume a default shape without executing v.  But that
> apparently is what happens.
>
>       ' ' +  ( :: ('a' assign 3: [ ])) a=: 0
> 3
>     a
> 3
>
> Here you are executing on a real domain error, and the error path is
> executed.
>
> Henry Rich
>
> On 9/14/2013 11:50 AM, Pascal Jasmin wrote:
>>     '' +  ( :: ('a' assign 3: [ ])) a
> ----------------------------------------------------------------------
> 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