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

Reply via email to