Since APL days u/y is {.y when 1=#y , even when
y is not in the domain of u .   For example:

   +/'a'
a

It is not much of a flaw.  The only plausible
alternative is to signal error.

The identity that is used to reason about u/y is

   u/y  <->  (u/k{.y) u (u/k}.y)

for k e. i.1+#y .



----- Original Message -----
From: Oleg Kobchenko <[EMAIL PROTECTED]>
Date: Saturday, April 7, 2007 7:03 pm
Subject: Re: [Jprogramming] Singleton Reduction

> So monad u/ returns {.y if 1=#y regardless of u?
> 
> One might think that it would be different,
> with rank 1 arguments, for atom valued +/ and
> vector valued ,/ when 1~:#y.
> 
> ins1=: 1 : 0
>  ".'v=.',u b.1
>  z=. v y
>  for_i. |.y do. 
>    z=. i u z end.
>  z
> )
> 
> However, it most likely modeled as below
> 
> ins2=: 1 : 0
>  if. 0=#y do. 
>    ".'v=.',u b.1
>    v y end.
>  z=. {:y
>  for_i. }.|.y do. 
>    z=. i u z end.
>  z
> )
> 
> That is when 1=#y, u is not even accessed in any way
> even for identity.
> 
>   $bogus/ 'a'
> 
>   $bogus/ ,'a'
> 
>   $bogus/ ,'ab'
> |value error: bogus
> |   $    bogus/,'ab'
> 
> 
>   bogus ins2 1
> 1
>   bogus ins1 1
> |value error: bogus
> |   ".'v=.',    u b.1
> 
> 
> --- Roger Hui <[EMAIL PROTECTED]> wrote:
> 
> > The monad ,/ should also work for this problem.
> > That it does not is a bug in the interpreter and
> > will be fixed for J6.02.
> > 
> >    $ ,/ 1$'a'       NB. wrong
> > 1
> >    append=: ,
> >    $ append/ 1$'a'  NB. correct
> > 
> >    $ append/ 'a'    NB. correct
> > 
> >    append/ 'abc'    NB. correct
> > abc
> > 
> > 
> > 
> > ----- Original Message -----
> > From: Roger Hui <[EMAIL PROTECTED]>
> > Date: Saturday, April 7, 2007 10:25 am
> > Subject: Re: [Jprogramming] Singleton Reduction
> > 
> > >   f=: {.^:(1=#)
> > >   f 'abc'
> > > abc
> > >   $ f 'a'
> > > 
> > >   $ f ,'a'
> > > 
> > > f^:proprosition y is equivalent to
> > > if. proposition y do. f y else. y end.
> > > 
> > > 
> > > 
> > > ----- Original Message -----
> > > From: "Leigh J. Halliwell" <[EMAIL PROTECTED]>
> > > Date: Saturday, April 7, 2007 10:14 am
> > > Subject: [Jprogramming] Singleton Reduction
> > > 
> > > > Dear J Forum:
> > > > 
> > > > Let X1 =. 'A' and X2 =. 1$'A'.  Now X1 and X2 look equal, 
> but 
> > > > because of
> > > > different ranks X1 does not equal X2.  I would like to 
> reduce a 
> > > > singleton to
> > > > an atom.  If #X is 1, {.X does this.  But I don't want to 
> take 
> > > the 
> > > > firstitem, if the string has more than one item.  Can 
> someone 
> > > tell 
> > > > me a simple or
> > > > efficient tacit expression that reduces one-rank, one-item 
> > > arrays 
> > > > to atoms,
> > > > and leaves other one-rank arrays unchanged?  Can it be done 
> > > > without gerunds?
> > > > Thanks.
> > > > 
> > > > Sincerely,
> > > > 
> > > > Leigh
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to