Hi Ric,
You are absolutely right. I would only want to use primitives alone as
long as it made sense to do so. My point is more that tacit J tends
to make J programmers prefer named verbs that are so short
that they lose the sense of Mathematics altogether.
Anyway, thanks for your list. It has helped me to define what you
need me to define.
My position:
1) I want to see a system with an executable notation to specifically
```aid in the learning of math in primary school and high school.
2) As much as possible I want to use only primitives and not previously
```defined verbs (subroutines), because that is how mathematical formulae
```are defined - however, other people should be free to do what they
```need to do.
3) For a number of reasons the J system is a good candidate - for the
````system, for the right to left explicit language and for the existence of
````a facility like tacit programming as a way of developing compound
````verbs without global nouns.
4) Because most verb symbols stand for both a monadic and a dyadic verb,
```the intent has to be determined from context:
`````a) In a right to left execution language the rule is very simple.
`````b) Through abandoning the right to left rule in tacit programming, J
`````````finds it very difficult to identify which is intended.
`````c) A variety of patches are needed to compensate, such as "@:",
````````"&" and "[:"
`````d) In some cases, such as (f &: g) y and x (f &: g) y, Learning J says
`````````the situation is still ambivalent.
`````e) J programmers tend to break mathematical formulae into small
`````````subroutines to avoid the complexity - this loses the sense of
`````````the mathematical formula, which is what the student is trying
`````````to understand - a formula is like a map of the process.
`````e) I think that the tacit notation as it is has a big a learning
`````````curve, and doesn't match existing mathematical notation well.
5) I want to be able to just assign my expression to the name:
````````a) by using copula (=:) like this:
`````````````Myname=: <insert expression here>
````````b) and by removing the arguments, leaving a compound verb without
````````````global nouns.
````````C) without confusing the Mathematics by adding Computer Science.
6) Because of the above I believe that a solution is to return
````to the right to left rule by changing the basic fork from (MDM)
````to (M)DM - not in J itself, but in a parallel mutation of J. Then:
`````````a) Tacit programming (which I have called a compound verb)
`````````````would be consistent with explicit J in this mutation.
`````````b) All of the patches could be removed.
7) It could be that the mutation requires some restrictions.
````J has complex structures built upon its foundations. If the way of
````defining one foundation, the fork, is changed, some of the upper parts
````of the structure might need to change with it. At this point, I just
````don't know enough J to know.
8) I do not want to impose any change whatsoever on experienced
````and effective J programmers. I am looking for a completely
````different audience that is unlikely to intersect with J programmers.
````I seek only advice from J programmers.
9) I believe there is a huge audience out there for a mutation of J that is
````consistent throughout, has a shorter learning curve and is closer to
````mathematical notation.
Don
----- Original Message -----
From: "Sherlock, Ric" <[email protected]>
To: "Chat forum" <[email protected]>
Sent: Thursday, April 23, 2009 11:56 PM
Subject: Re: [Jchat] Language S
> I'll leave the rest until you've had a chance to finish fleshing out your
> current position but just wanted to get some further clarification on your
> point 4).
>
>
>> From: Don Watson
>> ...
>> However a few clarifications follow:
>
>> 4) I want to use only primitives and not previously defined verbs
>> (subroutines), because that is how mathematical formulae are defined -
>> however, other people should be free to use subroutines, programs and
>> control structures as they wish.
>
>
> Now that you/your student has defined the verb stddev, are they able to
> reuse it as part of any other equation?
> How about the following mathematical formula to calculate the correlation
> between x and y:
>
> sigma(x,y)
> Corr(x,y) = ____________________
> sigma(x) sigma(y)
>
> Are they allowed to define a verb to provide the covariance of x & y and
> then code the correlation like this? :
> (x cov y) % (stddev x) * (stddev y)
>
> If "yes" then surely those verbs can be described as "subroutines"
> (appears they occur in mathematical formulae too!)? If "no" then I would
> disagree that the approach fosters understanding of the subject.
>
> Here is a definition of cov in case you want one.
> cov=: dyad def '(<:#x) %~ +/ (x - mean x) * (y - mean y)'
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm