Don W, This discussion has morphed overnight into a much broader debate.
First some general comments: I have been interested in your objective of using J at the school level for a long time, and made various forays with small groups of children. Some have found it quite exciting. However my professional teaching experience using the language has been limited to some hundreds of students doing university level statistics courses. Like you my interest in APL languages stems from the sixties. It seems to me that your concept of what is in school mathematics dates from 30 or more years ago than what is in the texts today. The language for the school mathematics curriculum must be able to produce a wide range of graphics, be suitable for many operations with sets, be a good tool for exploring a range of statistical ideas as well as providing a tool for covering some of the traditional topics which you have discussed. Most texts include a good deal of material you have labelled as computer science, but I would classify as appropriately specifying an important mathematical algorithm. J is in fact an excellent fit for this. I think you will also find that the concept of a function has a very important role in this material and that can be enriched greatly using J and its very simple tools for defining new functions and exploring their behaviour. I therefore think your avoidance of using simple defined functions in expressions is misplaced. In my experience students wanted them - and used them. Mathematics teachers will not really get up to speed unless they take them aboard in the rich way Ken intended with his language tools. You might like to look at a paper by Walter Spunde (a keen J user) who was concerned with teaching teachers. http://www.icme-organisers.dk/tsg14/TSG14-15.pdf Polynomials form an important traditional topic in elementary school mathematics. To treat them sensibly in J you really must use the primitives and teach students the relationship between the traditional notation and the elegant and simple tools in J. To re-express everything in a manner which mirrors the traditional tools just does not make sense. The students now are all computer users. They have experience of the need to follow the rules for a particular program or game or whatever. The biggest problem is not with the students but with the teachers that you are trying to reach. After you have done so, there is the further problem Bill mentioned, of getting the material into the curriculum. For some reasons which I do not understand the Computer Science departments seem to have been inoculated against the use of J even though it is an exceptional functional language. You seem to be very concerned about the symbols. The programmers of the world, many of them exceptional mathematicians use words. Mathematica has thousands of functions which all have distinct word names. Having a whole set of new primitivie characters is not necessary for commercial success with mathematicians. We should not be frightened to use words instead of the symbols for the primitives. In my experience school students can start readily with the primitive names and drop them at any time they are sufficiently familiar with the graphic representation which is the standard in this forum. You wrote: >> Another set of documentation is needed. I do have qualifications and >> experience in both Mathematics and Computer Science, but I have a >> struggle with the notes behind the vocabulary. That won't attract >> a 5th grade school teacher. Ric Sherlock responded: > > In my view this is the place where there is the most bang for buck to be > had. > As I understand it the Dictionary/Vocabulary serve firstly as a > specification for the J language rather than as a document for introducing > newcomers to the language. As such there are good reasons for keeping it > concise and precise. However I totally agree with you that it won't > attract school teachers! I also totally agree that it would be great to > have a separate document that was be more appropriate for that purpose. > > I think it would also be nice (continuing with the house selling metaphor) > to give all the documentation a new coat of paint in a more up-to-date > colour. In my opinion it currently looks dated, both in terms of visual > appearance and underlying structure. This task is not easy, and I think it is central to having simpler material. The Dictionary of J is a name which I think followed from Ken's Dictionary of APL, but it is not like any ordinary dictionary I know. It is not clear what principle is used for alphabetising the entries, and they do not follow the sort of rules which lexicographers use. Further the current dictionary assumes the reader knows the J primitives. That is not the case with beginners. We need a different sort of dictionary for beginners to use. You wrote in response to Bill: > Your second question, Bill, is the $64,000 question. I am only thinking > presently of the issue of persuading the J community that there is > something > worth doing. > There clearly is something worth doing, but do not expect to persuade the whole J community. All that is needed is a small group who actually do the things they think are needed. Second, Forks and Trains: I found there was a real difference between learning styles of students, and some will find an imperative style which you seem to be promoting attractive, while others will favour the understanding and structure you can attain with tacit form. To force all to use the same style may not be the best approach and I would urge you to find some ways of introducing both. If you limit yourself to verbs and adverbs the structure of forks is very simple, and I would suggest that you try and use them in that form. You do not seem to have used [: mentioned by Raul in any of the material so far but it provides a neat tool for including and using monadic verbs. Using trains in this form simplifies explaining what they do. Each verb in an 'even' position from the right has the expression to its right as its right argument, and the verb on its left reaches out to the argument(s) of the train. It is simple to include monadic and dyadic functions where required. In the following functions there are no conjunctions and parentheses are only used to indicate trains which must be executed as a group to provide a verb argument. You are concerned about the inclusion of nouns in trains. A noun can replace the left argument of any verb in an even position in the train. Simple use of [ and ] and parentheses enables arbitrary functions of the noun to be used in a train. Use of the reflex adverb can solve the problem of it being a right argument of the function being used. The following script takes some examples from your original paper. I believe it shows that you can solve some of the problems you attempt to address with your notation in a simple way. By being careful about how explicit expressions are written they can often be converted to tacit directly. Teachers actually find this somewhat amazing - and Walter was focusing on something which might prove the best selling point for them (well at least those who have enough mathematics to really appreciate the power of the idea.) Fraser ======================================= load 'primitives' NB. From your original paper c =: 15 19 23 22 21 24 19 (+/c)% (#c) NB. Express it just using the functions (+/%#) c NB. And give it a name mean =: +/%# NB. To round it <. 0.5 + mean c NB. The leftmost function has no left argument (cap <. 0.5 + mean) c meanr =: cap <. 0.5+mean meanr c NB. of course you could define round rnd =: [: <. 0.5 + ] NB. SD example NB. I would rewrite mdev =: ]-mean ssq =: [: +/ [: *: mdev sd =: [: %: ssq % # NB. But for beginners would prefer using the primitive NB. names because it helps focus on the meaning. At an NB. early stage we need to note the 'default' that a NB. a function has two arguments, and having a tool for NB. specifying a monadic use - it is [: (cap) mdev =: right - mean sum =: +/ ssq =: cap sum cap square mdev sd =: cap sqrt ssq % tally NB. Or using the preferred unbiased estimator sd =: cap sqrt ssq % _1 + tally NB. We make use of [ and ] to avoid conjunctions up =: [*10^] down =: [%10^] NB. And sometimes we need parentheses round =: ([: rnd up) down ] rnd mean c NB. effectively using new functions of value in many contexts NB. Surely we want to introduce students to functions which NB. are reusable. NB. For your fibonacci example I would introduce the NB. power conjunction to students and enter fib to NB. show its structure (Use box representation NB. because it shows the train structure so clearly.) fibstep =: ], [: sum _2 {. ] fib =: [ fibstep ^: [ ] fib 6 fib 0 1 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
