BlankThank you all for very helpful responses to my last email.
I will respond first to this comment from Matthew: "I think the idea of
introducing graphical characters into J is a bad one and that energy towards
getting new users into J would be better spent elsewhere like writing Labs."
I repeat that I am not trying to get new users into J - I am trying to teach
Mathematics and need an experiential tool that has the ease of
communication, the independence from operating systems, the free cost to
education and the well supported, thoroughly professional and reliable
nature of the J system. It's got almost everything I want, including tacit
programming - all I am looking for is how can it become exactly what I need
rather than exactly what the J community needs in a manner that is
transparent to the J community.
Matthew also says: "I personally like the ascii method, despite it
deceptively appearing as an ugly mess when first encountered, because once
you get used to it it is beautiful. The important questions to me are: "How
long does it take to get used to it and learn the beauty of J?" and: "Are
average elementary students, secondary students and (say) Post-secondary
Geography students capable of reaching this level of J understanding in the
limited time that can be delegated to this task within their regular
curriculum?"
To a comment from Raul: "The first example in your table became " " when
I try copying and pasting it into this message. This means you have not even
begun to tackle the hard problem of figuring out how this kind of thing
could even be possible." I copy something I said in a previous email: "In my
proposal, keying is done in identical ASCII, storage is done in identical
ASCII, transmission between systems is done in identical ASCII, mailing is
done in identical ASCII and every user of J continues using ASCII in exactly
the same way without knowing that anything has happened. The change is
transparent and causes none of the difficulties that are being discussed."
Thus the first example in the table would be stored and translated in
exactly the same way as it always has. The only change is in output to the
screen and the printer, when the two ASCII characters would be translated to
a special character.
Fraser says: "If your H1[F(x),G(x)] is mean to represent an expression
in J I do not know whether you mean H1(F(x),G(x)) where H1 is a monadic
fucntion with argument (F,G)x or using H1 dyadically (F H1 G) x"
Actually I did not mean H1[F(x),G(x)] and [ H2 (F, G) ] (x) to be J
expressions, but, sort of, Mathematical expressions. All I am saying is that
mathematically the % in (+/%#) is not the same kind of function as the % in
3 % 7. The H2(F,G) has, in J language, verbs as its arguments, rather than
nouns.
In response to Bjorn, I am not currently a member of the J-Programming
forum. I will join and look up what you suggest.
I response to Bill, I promise to read Programming in J.
In response to Don, I know that I can achieve what I want by a "program"
with successive lines of code - but I want to be able to show one line that
parallels the mathematical formula. How I do this at present is by copy and
paste - which is something we couldn't do on the old IBM 2741 paper printing
terminals!! I am going to give an example of a session to illustrate the
binomial theorem for (1 + x) ^ n. It is normal to prove theoretically that
it works for natural number values of n in pre-calculus, but calculation
using J can show that it works for any rational n if the series converges.
What follows is a demonstration, using copy and paste, to develop the J
sentence to do it. What I would like to know is, can someone work through a
similar gradual process that is easy for a student to follow and ends up
with tacit programming instead of a J sentence? If someone can do that, you
might change my opinion.
x=. 0.5 NB. For (1 + x )^n
n=. 5
r=. 6 NB. Take terms up to x^6
i.r
0 1 2 3 4 5
n- k =. i.r
5 4 3 2 1 0
k<:/k =. i.r
1 1 1 1 1 1
0 1 1 1 1 1
0 0 1 1 1 1
0 0 0 1 1 1
0 0 0 0 1 1
0 0 0 0 0 1
(k<:/k)*n-k=:i.r
5 5 5 5 5 5
0 4 4 4 4 4
0 0 3 3 3 3
0 0 0 2 2 2
0 0 0 0 1 1
0 0 0 0 0 0
k>:/k+1
0 0 0 0 0 0
1 0 0 0 0 0
1 1 0 0 0 0
1 1 1 0 0 0
1 1 1 1 0 0
1 1 1 1 1 0
(k>:/k+1)+(k<:/k)*n-k=:i.r
5 5 5 5 5 5
1 4 4 4 4 4
1 1 3 3 3 3
1 1 1 2 2 2
1 1 1 1 1 1
1 1 1 1 1 0
*/(k>:/k+1)+(k<:/k)*n-k=:i.r
5 20 60 120 120 0
1,*/(k>:/k+1)+(k<:/k)*n-k=:i.r
1 5 20 60 120 120 0
i. r + 1
0 1 2 3 4 5 6
!i.r + 1
1 1 2 6 24 120 720
(1,*/(k>:/k+1)+(k<:/k)*n-k=:i.r)%!i.r + 1
1 5 10 10 5 1 0 NB. Same result as Pascal's triangle
x^i.r+1
1 0.5 0.25 0.125 0.0625 0.03125 0.015625
(x^i.r+1)*(1,*/(k>:/k+1)+(k<:/k)*n-k=.i.r)%!i. r + 1
1 2.5 2.5 1.25 0.3125 0.03125 0
+/(x^i.r+1)*(1,*/(k>:/k+1)+(k<:/k)*n-k=.i.r)%!i. r + 1
7.59375
1.5^5 NB. Test if it gets the right result
7.59375
r=. 20
n=. 3.3
x=. .5
+/(x^i.r+1)*(1,*/(k>:/k+1)+(k<:/k)*n-k=.i.r)%!i. r + 1
3.81155
1.5^3.3
3.81155
x=.0.9
n=.7.21
+/(x^i.r+1)*(1,*/(k>:/k+1)+(k<:/k)*n-k=.i.r)%!i. r + 1
102.285
1.9^7.21
102.285
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm