It seems to prefer 3 : 0 explcit definition over {{}}. When I force it to {{}} it doesn’t seem to use x and y parameters. That is likely because the code base favors the original explicit definition.
As to the matrix multiplication: It doesn’t seem to have any concept of J matrix multiplication. Coplilot’s suggestion is as follows: NB. multiply 2 matrices mp =: 3 : 0 x=.x y=.y (x # y) #~ 1 0 2 ) It didn’t do very well with that. When I try to give it a hint: NB. multiply 2 matrices with +/ . * instead of #~ mp1 =: 3 : 0 x=.x y=.y +/ . * x # y ) It shoves it in there but it clearly doesn’t have an understanding of what it means. I can direct it a bit but it doesn’t seem to have a clear understanding that J can have dydactic function calls. It also doesn’t understand J’s for loop implementation. Here are some trials at getting copilot to use matrix multiply: NB. multiply 2 matrices with a loop mp2 =: 3 : 0 x=.x y=.y n=. #x z=. 0 for_i. n do. z=. z +/ (x i.~ i){.y end. z ) NB. matrix multiply 2 matrices with J matrix multiply +/ . * operation without using # or #~ mp3 =: 3 : 0 x=.x y=.y n=. #x z=. 0 for_i. n do. z=. z +/ (x i.~ i){.y end. z ) NB. J matrix multiply mp4 =: +/ . * NB. multiply 2 matrices with mp4 function mp5 =: 3 : 0 x=.x y=.y mp4 x # y ) So as another try I create an original style explicit definition of matrix multiply: NB. matrix multiply function mp6 =: 4 : 0 x +/ . * y ) NB. use mp6 to multiply 2 matrices mp7 =: 3 : 0 x=.x y=.y (x mp6 y) #~ 1 0 2 ) It clearly doesn’t understand the reserved function parameters x and y. It has a hangup on using # and #~ even though it uses # in its correct context at times. i got it to under stand how to insert a matrix multiply. But now looking over the code examples it doesn’t really understand the nuances of explicit definition 3 : 0 or 4 : 0 I was hoping someone on the list had some experience with generative AI or even copilot specifically to see if there is a way to improve Copilot’s understanding of J. Perhaps it is too much for the current crop of AI engines available to the public? Thanks for taking a look Raul. > On May 8, 2023, at 7:17 PM, Raul Miller <rauldmil...@gmail.com> wrote: > > I guess one question is: does the mechanism understand J token formation? > > For example, can you determine if it understands the difference > between +/ .* and +/.* ? > > If so, can it recognize that + /. * is the same as +/.* ? > > And, if so, does it recognize that {{ and { { are different while [[ > and [ [ are the same? > > These word formation issues could give rather strong hints about its > ability (or limitations on ability) to "reason about" programs. > > Thanks, > > -- > Raul > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm