Alex, What I had in mind is even more elementary, such as using J for 
explaining addition and multiplication of  nonnegative integers like this.

   1 NB. this is a one
1
   14#1 NB. this is a list of fourteen ones
1 1 1 1 1 1 1 1 1 1 1 1 1 1
   9#2 NB. this is a list of nine twos
2 2 2 2 2 2 2 2 2
   (14#1),(9#2) NB. here are the two lists concatenated
1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2
      #((14#1),(9#2)) NB. counting the concatenated list
23
   plus=. 4 : '#((x#1),(y#2))' NB.make a program 'plus' to count such 
concatenated lists
   14 plus 9 NB. test the program
23
   14+9 NB. the same  program is provided by the J system in a more efficient 
version called +
23
   3#1 NB. three ones
1 1 1
   9#(3#1) NB. nine examples of the three ones
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
   #(9#(3#1)) NB. count it
27
   times=. 4 : '#(x#(y#1))' NB. make a program 'times'
   9 times 3 NB. test the program
27
   9*3 NB. the program is provided by the J system in a faster and smaller 
version called *
27


I see no reason to tell the beginner that some of his parentheses are 
superfluous. Let him write them until he is familiar with elementary 
programming and arithmetic.

- Bo



>________________________________
> Fra: Alex Giannakopoulos <aeg...@blueyonder.co.uk>
>Til: programm...@jsoftware.com 
>Sendt: 5:14 lørdag den 1. december 2012
>Emne: Re: [Jprogramming] @: and capped fork
> 
>On 30 November 2012 16:17, Bo Jacoby <bojac...@yahoo.dk> wrote:
>
>> J is a rich language, and it might be a good idea to define an elementary
>> subset for beginners.
>
>
>Couldn't agree more.
>A simple startup configuration file.  Define verbs for trig functions so
>they don't look stupidly arbitrary.
>Some other elementary functions too, like polar2rect and rect2polar
>conversions that act on vectors (none of this xfy binary stuff here
>please), you know, stuff like you can find on *calculators*.
>Define dot-product, matrix-multiplication, cross-product, determinant, etc,
>as user-friendly built-in verbs.  When I am a beginner, I DO NOT, repeat
>NOT want to know about the . operator at the level of the jdict, it is a
>highly advanced subject, intriguing - yes, but not for newbies.  Yet I do
>want to do matrix ops.  I was told this was a language for linear algebra.
>It would probably be a good idea, then, if we could do some linalg -
>straight out of the box - without serious brain damage.  I have had abuse
>hurled at me by math teachers who have seen J's linalg primitives (LOL).
>Add some nice libs for equation solving while we're at it.  Simultaneous
>and also some numeric solvers.  This is what people want.  A language, not
>an assembler for a language.
>
>
>> J is a nice calculator for elementary computations. You can do a lot of
>> computing without knowing anything about binomial coefficients and taylor
>> expansions and capped forks.
>
>
>Agree with the first two, NO way on the third.  Even the 13 verb gives you
>capped verbs, there is no way to begin learning J without it.  Also they
>solve the problem of having to figure if you should use At or Atop,
>invaluable for a beginner who hasn;t quite mastered rank yet.
>
>This problem, which once again gives rise to a long thread, could easily be
>solved by a highly visible Programming FAQ page, with lots of links to.
>Deal with capped forks, @ and @:  and why you can't have things like   +/ a
>b c   You know, the questions people *keep asking*.   Remove ancient
>irrelevant stuff like the use of x. and y.   We are not at J401 any more.
>
>
>> If you need to understand everything in order to be happy, then you may be
>> unhappy. I taught my son elementary APL when he was 10 years old, and he
>> loved it!
>>
>
>Would he have been just as happy at 14 when he had to use the cosine rule
>to solve a triangle?  Would he really prefer
>cosrule_getang =: 13 : '_2&o.(((+/*:}.y)-*:{.y) % */ 2, }.y)'
>or
>cosrule_getang =: [: _2&o. (([: +/ [: *: }.) - [: *: {.) % [: */ 2 , }.
>to
>cosrule_getang := (Aa,B,C) -> acos((B^2+C^2-Aa^2)/(2.0*B*C));
>Just wondering...
>
>These are simple enough things to do, and I speak as a J newcomer.  There's
>not many languages you can say that about after two and a half years!  The
>Zen of J, grasshopper.
>
>Incidentally, is there a way to cap a monadic hook on the left?
>For example (=<.) was mentioned, but obviously it allows dyadic arguments,
>and fails if they are offered.
>Short of wrting monad : 'y=<.y'  is there a way I can keep it monadic (and
>implicit)?
>----------------------------------------------------------------------
>For information about J forums see http://www.jsoftware.com/forums.htm
>
>
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to