Hi Steven. There is an essay written by Roger Hui in Jwiki http://www.jsoftware.com/jwiki/Essays/Indeterminate
Results of operations on _. are inconsistent. 'All bets are off' as what Roger used to say. Сбт, 11 Дек 2010, Steven Taylor писал(а): > Hi Bill, > > Perfect! I was unaware of the dyadic case for head. > > Also, & &: @ @: *still* don't come naturally to me. > > About _. -- I'm being very careful with it. It comes back as NaN in C# which > is sometimes convenient, and mostly it behaves better than __ from what I > can see (can't find any boundary cases right now). I'm going to use it > sparingly. Is there a performance hit? What are your reservations? > > thanks, > -Steven > > > On 11 December 2010 10:57, <[email protected]> wrote: > > > Send Programming mailing list submissions to > > [email protected] > > > > To subscribe or unsubscribe via the World Wide Web, visit > > http://jsoftware.com/cgi-bin/mailman/listinfo/programming > > or, via email, send a message with subject or body 'help' to > > [email protected] > > > > You can reach the person managing the list at > > [email protected] > > > > When replying, please edit your Subject line so it is more specific > > than "Re: Contents of Programming digest..." > > > > > > Today's Topics: > > > > 1. Sudoku solution query (Robert Goudie) > > 2. Re: Sudoku solution query (bill lam) > > 3. auto fill with something other than zero? (Steven Taylor) > > 4. Re: auto fill with something other than zero? (Steven Taylor) > > 5. Re: auto fill with something other than zero? (bill lam) > > 6. Re: Verbs that take verbs as arguments (pt 2) (Alex Gian) > > > > > > ---------------------------------------------------------------------- > > > > Message: 1 > > Date: Sat, 11 Dec 2010 18:40:51 +1300 > > From: "Robert Goudie" <[email protected]> > > Subject: [Jprogramming] Sudoku solution query > > To: <[email protected]> > > Message-ID: <000101cb98f5$f8d020b0$ea7062...@[email protected]> > > Content-Type: text/plain; charset="us-ascii" > > > > Hi, > > > > > > > > In the essay on Sudoku solutions at > > http://www.jsoftware.com/jwiki/Essays/Sudoku the first line > > > > > > > > j =. (]/. i...@#) ,{;~3#i.3 > > > > > > > > generates the indicies for each box. As a relative newcomer to J I am > > trying to figure out the relationship between the matrix created by the > > expression on the LHS of the ravel (,) and the paired box values on the RHS > > of this expression. I can "tune" the shape and contents of matrix created > > on the LHS to some degree by varying the paired values on the RHS. > > > > > > > > Could someone please clarify the relationship between the limited shaping > > of > > the matrix on the left by varying the pairs of values in the box list - > > keeping in mind I don't have all of J's nuances under the belt yet? > > > > > > > > Thanks > > > > Rob > > > > > > > > > > > > ------------------------------ > > > > Message: 2 > > Date: Sat, 11 Dec 2010 14:18:36 +0800 > > From: bill lam <[email protected]> > > Subject: Re: [Jprogramming] Sudoku solution query > > To: [email protected] > > Message-ID: <[email protected]> > > Content-Type: text/plain; charset=utf-8 > > > > What does "limited shaping" mean? > > > > ???, 11 ??? 2010, Robert Goudie ?????(?): > > > Hi, > > > > > > > > > > > > In the essay on Sudoku solutions at > > > http://www.jsoftware.com/jwiki/Essays/Sudoku the first line > > > > > > > > > > > > j =. (]/. i...@#) ,{;~3#i.3 > > > > > > > > > > > > generates the indicies for each box. As a relative newcomer to J I am > > > trying to figure out the relationship between the matrix created by the > > > expression on the LHS of the ravel (,) and the paired box values on the > > RHS > > > of this expression. I can "tune" the shape and contents of matrix > > created > > > on the LHS to some degree by varying the paired values on the RHS. > > > > > > > > > > > > Could someone please clarify the relationship between the limited shaping > > of > > > the matrix on the left by varying the pairs of values in the box list - > > > keeping in mind I don't have all of J's nuances under the belt yet? > > > > > > > > > > > > Thanks > > > > > > Rob > > > > > > > > > > > > ---------------------------------------------------------------------- > > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > -- > > regards, > > ==================================================== > > GPG key 1024D/4434BAB3 2008-08-24 > > gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3 > > > > > > ------------------------------ > > > > Message: 3 > > Date: Sat, 11 Dec 2010 09:12:45 +0000 > > From: Steven Taylor <[email protected]> > > Subject: [Jprogramming] auto fill with something other than zero? > > To: Programming forum <[email protected]> > > Message-ID: > > <[email protected]> > > Content-Type: text/plain; charset=ISO-8859-1 > > > > Hi, > > > > I like the way ,:!.f works. It's quite neat. > > > > What would be even better is if > open behaved a little like ,: does with > > it's fill conjunction. > > > > e.g. > > f=:_. > > [A=:(i.3),:!.f(i.5) > > 0 1 2 _. _. > > 0 1 2 3 4 > > > > we can extend that further with > > [A=:A,!.f(i.7) > > (but I suppose we've got a full copy of the existing A each time if we > > were worried about performance.) > > > > In any case, something like this just looks more elegant: > > > > L=:(i.3);(i.5);(i.7) > > > L > > 0 1 2 0 0 0 > > 0 1 2 3 0 0 > > 0 1 2 3 4 5 > > > > >!.f L > > |domain error > > > > any ideas? I migh play with something like this later: get count, get max > > count of each boxed list. Prebuild filled array. Utilise special code form > > of ammend... but there could be a loop :( > > > > thanks, > > -Steven > > > > > > ------------------------------ > > > > Message: 4 > > Date: Sat, 11 Dec 2010 10:03:34 +0000 > > From: Steven Taylor <[email protected]> > > Subject: Re: [Jprogramming] auto fill with something other than zero? > > To: Programming forum <[email protected]> > > Message-ID: > > <[email protected]> > > Content-Type: text/plain; charset=ISO-8859-1 > > > > pity that something like this wont work for the fill portion of the 2 > > dimensional n-laminate . > > > > L=:(1 1 1 _. _. _. _.),(1 1 1 1 1 _. _.),:(1 1 1 1 1 1 1) > > A=:(i.3),(i.5),:(i.7) > > L*A > > > > because > > 0*_. > > 0 > > > > but A+L does it! > > > > Now to come up with the 1 and _. matrix based on a list of boxes. > > B=:(1; 1 2 3; 1 2 3 4 5) > > max=:>./ > # each B > > ((1$~,_.$~max-)#) each B > > |domain error > > almost. But 1$~,_. on its own works. > > > > -Steven > > > > On 11 December 2010 09:12, Steven Taylor <[email protected]> wrote: > > > > > Hi, > > > > > > I like the way ,:!.f works. It's quite neat. > > > > > > What would be even better is if > open behaved a little like ,: does with > > > it's fill conjunction. > > > > > > e.g. > > > f=:_. > > > [A=:(i.3),:!.f(i.5) > > > 0 1 2 _. _. > > > 0 1 2 3 4 > > > > > > we can extend that further with > > > [A=:A,!.f(i.7) > > > (but I suppose we've got a full copy of the existing A each time if we > > > were worried about performance.) > > > > > > In any case, something like this just looks more elegant: > > > > > > L=:(i.3);(i.5);(i.7) > > > > L > > > 0 1 2 0 0 0 > > > 0 1 2 3 0 0 > > > 0 1 2 3 4 5 > > > > > > >!.f L > > > |domain error > > > > > > any ideas? I migh play with something like this later: get count, get > > max > > > count of each boxed list. Prebuild filled array. Utilise special code > > form > > > of ammend... but there could be a loop :( > > > > > > thanks, > > > -Steven > > > > > > > > > ------------------------------ > > > > Message: 5 > > Date: Sat, 11 Dec 2010 18:27:05 +0800 > > From: bill lam <[email protected]> > > Subject: Re: [Jprogramming] auto fill with something other than zero? > > To: [email protected] > > Message-ID: <[email protected]> > > Content-Type: text/plain; charset=utf-8 > > > > If I understand correctly, we want > > max=: >./ #&> B > > max&({.!._.) &> B > > > > but not sure if your really want to play with _. > > > > ???, 11 ??? 2010, Steven Taylor ?????(?): > > > pity that something like this wont work for the fill portion of the 2 > > > dimensional n-laminate . > > > > > > L=:(1 1 1 _. _. _. _.),(1 1 1 1 1 _. _.),:(1 1 1 1 1 1 1) > > > A=:(i.3),(i.5),:(i.7) > > > L*A > > > > > > because > > > 0*_. > > > 0 > > > > > > but A+L does it! > > > > > > Now to come up with the 1 and _. matrix based on a list of boxes. > > > B=:(1; 1 2 3; 1 2 3 4 5) > > > max=:>./ > # each B > > > ((1$~,_.$~max-)#) each B > > > |domain error > > > almost. But 1$~,_. on its own works. > > > > > > -Steven > > > > > > On 11 December 2010 09:12, Steven Taylor <[email protected]> wrote: > > > > > > > Hi, > > > > > > > > I like the way ,:!.f works. It's quite neat. > > > > > > > > What would be even better is if > open behaved a little like ,: does > > with > > > > it's fill conjunction. > > > > > > > > e.g. > > > > f=:_. > > > > [A=:(i.3),:!.f(i.5) > > > > 0 1 2 _. _. > > > > 0 1 2 3 4 > > > > > > > > we can extend that further with > > > > [A=:A,!.f(i.7) > > > > (but I suppose we've got a full copy of the existing A each time if > > we > > > > were worried about performance.) > > > > > > > > In any case, something like this just looks more elegant: > > > > > > > > L=:(i.3);(i.5);(i.7) > > > > > L > > > > 0 1 2 0 0 0 > > > > 0 1 2 3 0 0 > > > > 0 1 2 3 4 5 > > > > > > > > >!.f L > > > > |domain error > > > > > > > > any ideas? I migh play with something like this later: get count, get > > max > > > > count of each boxed list. Prebuild filled array. Utilise special code > > form > > > > of ammend... but there could be a loop :( > > > > > > > > thanks, > > > > -Steven > > > > > > > ---------------------------------------------------------------------- > > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > -- > > regards, > > ==================================================== > > GPG key 1024D/4434BAB3 2008-08-24 > > gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3 > > > > > > ------------------------------ > > > > Message: 6 > > Date: Sat, 11 Dec 2010 10:56:52 +0000 > > From: Alex Gian <[email protected]> > > Subject: Re: [Jprogramming] Verbs that take verbs as arguments (pt 2) > > To: Programming forum <[email protected]> > > Message-ID: <1292065013.11501.83.ca...@headhoncho> > > Content-Type: text/plain; charset="UTF-8" > > > > Hardly something to apologise about - I really appreciate your help! > > > > "My best attempt for up and down tuples is to represent up tuples as > > columns and down tuples as rows (and scalars as scalars)." (Marshall) > > > > ^Nice idea. I'll mull on it. My initial thought was to have ups just > > like normal vectors and downs as a boxed vector with a "down" prefix, in > > order to simulate SCMUTILS where up is just a normal vector, but keeping > > the option to change it in the future as SCMUTILS has done. > > Technically, then, up vectors could also (optionally) be boxed with an > > "up" prefix. > > > > 'up'; 1 2 3 4 > > ???????????? > > ?up?1 2 3 4? > > ???????????? > > > > However, the rows/columns appraoach may be neater, since it is closer to > > the math (I think) > > > > I wonder if it would be acceptable to start a thread called SICM, to > > keep it all together and stop it from spilling over? > > > > Thanks again to everyone. > > > > > > On Fri, 2010-12-10 at 20:20 -0500, Marshall Lochbaum wrote: > > > Sorry for all the emails--I think this is the last. The final version of > > tuple utils, complete with the rotation matrix example: > > > > > > dispu=:3 :0 > > > if. 0...@$y do. ":y > > > elseif. 1=#y do. dispd {.y > > > elseif. do. '()' surround ((, ','&,)/ dispd"_1 y) end. > > > ) > > > dispd=:3 :0 > > > if. 0...@$y do. ":y > > > elseif. 1=#y do. dispu {.y > > > elseif. do. '[]' surround ((, ','&,)/ dispu"_1 y) end. > > > ) > > > > > > disptuple=:' ' -.~ dispd > > > > > > multiply=: 4 :0 > > > assert. 0 0-: 2| x ,&(#...@$) y > > > if. 0 e. x ,&(#...@$) y do. x*y NB. scalar multiplication > > > elseif. x (-:|.)&(2{.$) y NB. contraction > > > do. x (+/^:2 @:(multiply"_2) 1 0&|:) y > > > elseif. do. x multiply"_ _2 y NB. non-contraction > > > end. > > > ) > > > > > > NB. *****Example***** > > > > > > disptuple rot=.(2 1 1 2$ 2 1 _1 2) > > > [(2,1),(_1,2)] > > > disptuple r=.rot (*...@[ * |@[ o. ]) th=.0.25p1 NB. 45 degree rotation > > matrix > > > [(0.707107,0.707107),(_0.707107,0.707107)] > > > disptuple v=.,:1 0 NB. unit vector in the x direction > > > (1,0) > > > disptuple r multiply v > > > (0.707107,0.707107) > > > disptuple r multiply r NB. two 45 degree rotations -> one 90 degree > > rotation > > > [(2.22045e_16,1),(_1,2.22045e_16)] > > > > > > > > > Marshall > > > > > > -----Original Message----- > > > From: Marshall Lochbaum [mailto:[email protected]] > > > Sent: Friday, December 10, 2010 7:57 PM > > > To: 'Programming forum' > > > Subject: RE: [Jprogramming] Verbs that take verbs as arguments (pt 2) > > > > > > Now I can present a rather nice tuple display that conforms with the > > standards in SICM: > > > > > > dispu=:3 :0 > > > if. 0...@$y do. ":y > > > elseif. 1=#y do. dispd {.y > > > elseif. do. '()' surround ((, ','&,)/ dispd"_1 y) end. > > > ) > > > dispd=:3 :0 > > > if. 0...@$y do. ":y > > > elseif. 1=#y do. dispu {.y > > > elseif. do. '[]' surround ((, ','&,)/ dispu"_1 y) end. > > > ) > > > > > > disptuple=:dispd > > > > > > This gives: > > > > > > u=.,:1 2 3 > > > d=.,.1 2 3 > > > s=.2 > > > disptuple@> u;d;s > > > (1,2,3) > > > [1,2,3] > > > 2 > > > disptuple u multiply u > > > ((1,2,3),(2,4,6),(3,6,9)) > > > > > > You can also try > > > disptu...@multiply&.>/~ u;d;s > > > but I would rather not post boxes in an email. > > > > > > Marshall > > > > > > > > > -----Original Message----- > > > From: Marshall Lochbaum [mailto:[email protected]] > > > Sent: Friday, December 10, 2010 7:33 PM > > > To: 'Programming forum' > > > Subject: RE: [Jprogramming] Verbs that take verbs as arguments (pt 2) > > > > > > A fully recursive version is given below: > > > > > > multiply=:4 :0 "2 > > > assert. 0 0-: 2| x ,&(#...@$) y > > > if. 0 e. x ,&(#...@$) y do. x*y > > > elseif. x ~:&(1 i. $) y do. x (+/@,@:(multiply"_2) |:) y elseif. do. x > > > multiply"_2 _ y end. > > > ) > > > > > > Marshall > > > > > > -----Original Message----- > > > From: Marshall Lochbaum [mailto:[email protected]] > > > Sent: Friday, December 10, 2010 7:29 PM > > > To: 'Programming forum' > > > Subject: RE: [Jprogramming] Verbs that take verbs as arguments (pt 2) > > > > > > My best attempt for up and down tuples is to represent up tuples as > > columns and down tuples as rows (and scalars as scalars). > > > Thus an up tuple has shape (1 n) and a down tuple has shape (n 1) . > > > This gives, with many conditionals, a multiplication routine: > > > > > > multiply=:4 :0 "2 > > > assert. 0 0-: 2| x ,&(#...@$) y NB. reject odd > > > ranks--these > > cannot be tuples > > > if. 0 e. x ,&(#...@$) y do. x*y NB. one of x or y is a > > scalar > > > elseif. x ~:&(1 i. $) y do. x (+/@,@:* |:) y NB. up*down or down*up > > > elseif. do. x */ y end. NB. up*up or > > down*down > > > ) > > > > > > Which gives all the correct results--try > > > > > > u=. ,: 1 2 3 > > > d=. ,. 1 2 3 > > > s=. 2 > > > multiply&.>/ u;d;s > > > > > > One note is that this definition does not employ recursion as > > specified--it cannot handle nested tuples. > > > > > > Marshall > > > > > > -----Original Message----- > > > From: [email protected] [mailto: > > [email protected]] On Behalf Of Alex Gian > > > Sent: Friday, December 10, 2010 6:55 AM > > > To: Programming forum > > > Subject: Re: [Jprogramming] Verbs that take verbs as arguments (pt 2) > > > > > > Thanks very much for that Marshall and Raul, > > > > > > I will go over it in detail! > > > > > > BTW, > > > If any Jers want to understand Wisdom & Sussman's approach to Classical > > Mechanics, using a clear unambiguous modern functional notation (=> computer > > > executable) there is also a good introductory paper: > > > "The Role of Programming in the formulation of Ideas" > > > http://dspace.mit.edu/handle/1721.1/6707 > > > > > > Also if you have got SICM, and want a brief intro into their model look > > at Chapter 8 (our notation) so that you don't have to glean the > > computational approach from reading the book. > > > http://mitpress.mit.edu/sicm/book-Z-H-79.html#%_chap_8 > > > > > > Finally, what I think will be an interesting J challenge (when I get > > round to it) is the implementation of their tuples. The text uses two types > > "up" > > > and "down" tuples, with up tuples equivalent to regular vectors, while > > down tuples correspond to duals. There is an interesting contraction > > possible when tuples are of the same length and opposite type. > > > You can get a taste of this from the MIT-scheme "scmutils" manual In the > > section on "Up tuples and Down tuples". > > > http://groups.csail.mit.edu/mac/users/gjs/6946/refman.txt (about 10 > > screens > > > down) > > > > > > My apologies for going a bit off-topic, but this stuff along with some > > practical applications will be my J playing field for the foreseeable... > > > > > > > > > > > > > > > On Thu, 2010-12-09 at 22:57 -0500, Marshall Lochbaum wrote: > > > > Having taken an incredibly shallow look at the first few pages of > > > > SICM, I will now highly recommend to you the conjunction > > > > > > > > T=: 2 : '] , u d. (i.<:n)' > > > > > > > > where (u T n) gives the first n components of the "local tuple" of the > > > > function u. It may then be applied to a time t to obtain the actual > > value > > > > of this vector. So: > > > > > > > > *: T 4 > > > > ] , (*: , +: , 2"0)"0 > > > > > > > > For the record, I am not entirely sure how this works with vector > > outputs > > > > (or inputs, but these seem less important). > > > > > > > > Marshall > > > > > > > > -----Original Message----- > > > > From: [email protected] > > > > [mailto:[email protected]] On Behalf Of Alex Gian > > > > Sent: Thursday, December 09, 2010 7:53 PM > > > > To: Programming forum > > > > Subject: [Jprogramming] Verbs that take verbs as arguments (pt 2) > > > > > > > > Sorry to plague you with more newbie questions, but I'm a little > > pressed > > > > for time here. > > > > > > > > OK, for anyone familiar with Scheme/Lisp/?-calculus etc, here's what > > I'm > > > > trying to do: > > > > > > > > (define (gamma q) > > > > (lambda(t) > > > > (list t (q t) ((d1 q) t))) > > > > > > > > > > > > In other words, I want to pass a monadic verb (call it 'q') to the > > > > 'gamma' verb/function and I want the result to be a monadic > > > > verb/function that will accept a value ('t') and return a three elem > > > > array of rank 1 t, q t, q D.1 t > > > > > > > > IOW, something like > > > > testfunc =. gamma @ q > > > > testfunc 1.1 > > > > 1.1 (q 1.1) ((q D.1) 1.1) > > > > > > > > (In case anyone wonders why the weird questions, I am working through > > > > Sussman & Wisdom's SICM, and would like to try the code in parallel in > > > > J to compare the two notations.) > > > > > > > > I suppose I am really trying to figure how J deals with anonymous > > > > functions. Where I am getting stuck is the scoping of the values of y > > > > (and x) in explicit definitions. > > > > > > > > I /could/ do it as a dyad, but > > > > gamma=: dyad : 'y,(x y),x D.1 y' > > > > doesn't seem to work for me either, and I really would prefer monadic, > > > > kinda seeing how "currying" maps to J. > > > > > > > > > > > > > > > > > > > > > > > > > > > > ---------------------------------------------------------------------- > > > > 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 > > > > End of Programming Digest, Vol 63, Issue 8 > > ****************************************** > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm -- regards, ==================================================== GPG key 1024D/4434BAB3 2008-08-24 gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
