We don't do anyone any favors by providing if. y<0 do. c elseif. y>:0 do. d end. instead of (c*y<0)+(d*y>:0)
For one thing, the former has to work scalar-by-scalar, and for now and for the forseeable future it'll be orders of magnitude slower that the latter expression. > There are many places where newer and better ways of doing things could be added to save lots of new users many pitfalls. Yes, we have newer and better ways of doing things; it's called array thinking, and booleans returning 0 and 1 instead of false and true, and ... On Sat, May 18, 2013 at 1:41 PM, Linda Alvord <[email protected]>wrote: > try=: 3 : 0 > c=:12 > d=:14 > if. c*y<0 do. c elseif. d*y>:0 do. d end. > ) > try _3 > 12 > try 0 > 14 > try 3 > 14 > > c=:12 > d=:14 > y=:_3 > (c*y<0)+(d*y>:0) > 12 > x=:0 > (c*y<0)+(d*y>:0) > 12 > x=:3 > (c*y<0)+(d*y>:0) > 12 > > Roger, Most people seem to go first to the vocabulary to find a starting > place to solve their problems. > > Wouldn't it be useful to go to "Control Structures" to find a major > improvement such as the one you just wrote: > > if. c*y<0 do. c elseif. d*y>:0 do. d end. > or: > (c*y<0)+(d*y>:0) > > There are many places where newer and better ways of doing things could be > added to save lots of new users many pitfalls. > > Linda > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
