Raul, Here's what you wrote. I didn't understand the parentheses.
a=:%
l=:i.3
t=:i:3
f=: 1 :(':';'x u /y')
l a f t
0 0 0 0 0 0 0
_0.333333 _0.5 _1 _ 1 0.5 0.333333
_0.666667 _1 _2 _ 2 1 0.666667
So I wrote function which also works and I also don't understand it.
g=: 1 :A=:':';'x u /y'
l a g t
0 0 0 0 0 0 0
_0.333333 _0.5 _1 _ 1 0.5 0.333333
_0.666667 _1 _2 _ 2 1 0.666667
If I remove A=: it no longer works! What is happening here to make g work
correctly AND h fail?
h=: 1 :':';'x u /y'
|syntax error: scriptd
| h=: 1 :':';'x u /y'
|[-10] c:\users\owner\j801-user\temp\114.ijs
Linda
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Raul Miller
Sent: Thursday, December 05, 2013 10:37 AM
To: Programming forum
Subject: Re: [Jprogramming] Times Table Therapy
Let's think about this definition:
g=: 1 :'":y,x a f y'
This explicit definition uses the names x and y but does not use the names m,
n, u or v.
This means that x and y take on "parse time roles". This is a legacy from an
earlier stage of J development.
In other words, in the sentence
1 g a t
is equivalent to the sentence
(1 g) a t
and:
x has the value 1
y is undefined (because g is an adverb and not a conjunction).
J then tries to find the value of (1 g) and if that result were a verb it would
get the value of (a t).
However, as you can see from the error message, y had no value.
I think you probably should replace x with u, since u is the left argument to
an adverb or conjunction which can be a verb. Once you use u (or m or n or v) x
and y indicate that you are building an explicit verb and y will take on the
value of the right argument to that verb when it is executed.
Does this help?
Thanks,
--
Raul
On Wed, Dec 4, 2013 at 9:59 PM, Linda Alvord <[email protected]> wrote:
> Raul, Both f and f2 are very strange definitions. However both give the
> desired result.
>
> a=:%
> l=:i.3
> t=:i:
> f=: 1 :(':';'x u /y')
> l a f t
> 0 0 0 0 0 0 0
> _0.333333 _0.5 _1 _ 1 0.5 0.333333
> _0.666667 _1 _2 _ 2 1 0.666667
>
> f2=: 1 :A=:':';'x u /y'
> l a f2 t
> 0 0 0 0 0 0 0
> _0.333333 _0.5 _1 _ 1 0.5 0.333333
> _0.666667 _1 _2 _ 2 1 0.666667
>
> (l a f t)-:l a f2 t
> 1
>
>
> But they do not seem to allow me to continue and use them in a second
> function.
>
>
> g=: 1 :'":y,x a f y'
> l g a t
> |value error: y
> | ":y,x a f y
>
> g2=: 1 :'":y,x a f2 y'
> l a g2 t
> |value error: y
> | ":y,x a f2 y
>
> Is there some way to continue...
>
> Linda
>
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Raul
> Miller
> Sent: Tuesday, December 03, 2013 10:49 PM
> To: Programming forum
> Subject: Re: [Jprogramming] Times Table Therapy
>
> g=: 1 :(':';'x u /y')
>
> Without the ':' the verb %g is a monad.
>
> Thanks,
>
> --
> Raul
>
> On Tue, Dec 3, 2013 at 10:20 PM, Linda Alvord <[email protected]> wrote:
>> Raul, We've been moving for the last several weeks and I haven't studied
>> this yet.
>>
>> It seems odd that f is so simple and g is impossible.
>>
>> f=: 1 :'y u / y'
>> a=:%
>> a f i.4
>> 0 0 0 0
>> _ 1 0.5 0.333333
>> _ 2 1 0.666667
>> _ 3 1.5 1
>>
>> (i.3)%/i:3
>> 0 0 0 0 0 0 0
>> _0.333333 _0.5 _1 _ 1 0.5 0.333333
>> _0.666667 _1 _2 _ 2 1 0.666667
>>
>> g=: 1 :'x u /y'
>> (i.3) a g i:3
>> |domain error: scriptd
>> | (i.3) a g i:3
>> |[-17] c:\users\owner\j801-user\temp\113.ijs
>>
>> Is there an easy way to write g ?
>>
>> Linda
>>
>>
>> -----Original Message-----
>> From: [email protected]
>> [mailto:[email protected]] On Behalf Of Raul
>> Miller
>> Sent: Friday, November 15, 2013 7:32 AM
>> To: Programming forum
>> Subject: Re: [Jprogramming] Times Table Therapy
>>
>> & is compose here
>> http://www.jsoftware.com/help/dictionary/d630v.htm
>>
>> `:6 is evoke gerund as a train
>> http://www.jsoftware.com/help/dictionary/d612.htm
>>
>> the following / is outer product (or "table")
>> http://www.jsoftware.com/help/dictionary/d420.htm
>>
>> I imagine you are already familiar with that one?
>>
>> Here's my session from when I wrote that, along with some notes on my
>> thinking. I am including my mistaken experiments. I think this took me
>> between fifteen minutes and half an hour, but I did not time it so I do not
>> know for sure.
>>
>> First, I wanted to make sure that the thing worked, so I did a literal copy
>> and paste of your definition of T and then I pasted in the values to try to
>> make it work.
>>
>> T=: 1
>> :'(,.(<":u),<":,.>{.y),.(<{.":A),:<}.[A=:(>}.y),".(":,>{.y),(u,,''/''),":,>}.y'
>> '%' 1
>> :'(,.(<":u),<":,.>{.y),.(<{.":A),:<}.[A=:(>}.y),".(":,>{.y),(u,,''/''),":,>}.y'
>> (i.3);i:3
>> ┌─┬──────────────────────────────────┐
>> │%│ _3 _2 _1 0 1 2 3│
>> ├─┼──────────────────────────────────┤
>> │0│ 0 0 0 0 0 0 0│
>> │1│_0.333333 _0.5 _1 _ 1 0.5 0.333333│
>> │2│_0.666667 _1 _2 _ 2 1 0.666667│
>> └─┴──────────────────────────────────┘
>>
>> Next, I started introducing small changes. I wanted to make sure that
>> I understood what you wrote and sometimes the easiest way of doing
>> that is finding equivalent expressions. And the easiest way there
>> sometimes is to make small changes that seem equivalent. I also
>> wanted a shorter expression so that I did not have so much code to
>> think about. (I prefer to think in transformations of data, and a lot
>> of steps might be easy to write but reading?)
>>
>> The first thing I did was change ,>}.y on the right to >{:y. Using }.
>> on the pair leaves an extra leading dimension (1) which you eliminate
>> through , so why not just use {: and avoid it?
>>
>> '%' 1
>> :'(,.(<":u),<":,.>{.y),.(<{.":A),:<}.[A=:(>}.y),".(":,>{.y),(u,,''/''),":>{:y'
>> (i.3);i:3
>> ┌─┬──────────────────────────────────┐
>> │%│ _3 _2 _1 0 1 2 3│
>> ├─┼──────────────────────────────────┤
>> │0│ 0 0 0 0 0 0 0│
>> │1│_0.333333 _0.5 _1 _ 1 0.5 0.333333│
>> │2│_0.666667 _1 _2 _ 2 1 0.666667│
>> └─┴──────────────────────────────────┘
>>
>> The next thing I did was remove the ravel of the rightmost '/' - it is
>> getting appended to '%' and '%/' is already rank 1.
>>
>> '%' 1
>> :'(,.(<":u),<":,.>{.y),.(<{.":A),:<}.[A=:(>}.y),".(":,>{.y),(u,''/''),":>{:y'
>> (i.3);i:3
>> ┌─┬──────────────────────────────────┐
>> │%│ _3 _2 _1 0 1 2 3│
>> ├─┼──────────────────────────────────┤
>> │0│ 0 0 0 0 0 0 0│
>> │1│_0.333333 _0.5 _1 _ 1 0.5 0.333333│
>> │2│_0.666667 _1 _2 _ 2 1 0.666667│
>> └─┴──────────────────────────────────┘
>>
>> Next I changed u to m. u can be a verb and this code assumes you are using a
>> noun.
>>
>> '%' 1
>> :'(,.(<":m),<":,.>{.y),.(<{.":A),:<}.[A=:(>}.y),".(":,>{.y),(m,''/''),":>{:y'
>> (i.3);i:3
>> ┌─┬──────────────────────────────────┐
>> │%│ _3 _2 _1 0 1 2 3│
>> ├─┼──────────────────────────────────┤
>> │0│ 0 0 0 0 0 0 0│
>> │1│_0.333333 _0.5 _1 _ 1 0.5 0.333333│
>> │2│_0.666667 _1 _2 _ 2 1 0.666667│
>> └─┴──────────────────────────────────┘
>>
>> Next, I wanted to evoke the verb named in m. There's a 128!: foreign which I
>> probably should have used, but I was not sure if ~ could be used on a
>> primitive like this.
>>
>> '%' 1 :'(,.(<":m),<":,.>{.y),.(<{.":A),:<}.[A=:(>}.y),".(>{.y)(m~/)>{:y'
>> (i.3);i:3
>> |ill-formed name
>> | (,.(<":m),<":,.>{.y),.(<{.":A),:<}.[A=:(>}.y),".(>{.y)( m~/)>{:y
>>
>> No. So, ok, let's box it and use evoke gerund:
>>
>> '%' 1
>> :'(,.(<":m),<":,.>{.y),.(<{.":A),:<}.[A=:(>}.y),".(>{.y)((<m)`:6/)>{:y'
>> (i.3);i:3
>> |domain error
>> | (,.(<":m),<":,.>{.y),.(<{.":A),:<}.[A=:(>}.y), ".(>{.y)((<m)`:6/)>{:y
>>
>> Oops, I am computing a numeric result, so the ". has to go.
>>
>> '%' 1
>> :'(,.(<":m),<":,.>{.y),.(<{.":A),:<}.[A=:(>}.y),(>{.y)((<m)`:6/)>{:y'
>> (i.3);i:3
>> ┌─┬──────────────────────────────────┐
>> │%│ _3 _2 _1 0 1 2 3│
>> ├─┼──────────────────────────────────┤
>> │0│ 0 0 0 0 0 0 0│
>> │1│_0.333333 _0.5 _1 _ 1 0.5 0.333333│
>> │2│_0.666667 _1 _2 _ 2 1 0.666667│
>> └─┴──────────────────────────────────┘
>>
>> Now let's try cleaning it up, using an outer product instead of taking apart
>> boxes individually.
>>
>> '%' 1 :'(,.(<":m),<":,.>{.y),.(<{.":A),:<}.[A=:(>}.y),((<m)`:6/)&>/>y'
>> (i.3);i:3
>> ┌─┬──────────────────┐
>> │%│_3 _2 _1 0 1 2 3│
>> ├─┼──────────────────┤
>> │0│0 _0.5 _2 0 0 0 0 │
>> │1│ │
>> │2│ │
>> └─┴──────────────────┘
>>
>> Oops, I need to compose unbox with the outer product, so that leads us to
>> the /&> part you were asking about.
>>
>> '%' 1 :'(,.(<":m),<":,.>{.y),.(<{.":A),:<}.[A=:(>}.y),((<m)`:6/)&>/y'
>> (i.3);i:3
>> ┌─┬──────────────────────────────────┐
>> │%│ _3 _2 _1 0 1 2 3│
>> ├─┼──────────────────────────────────┤
>> │0│ 0 0 0 0 0 0 0│
>> │1│_0.333333 _0.5 _1 _ 1 0.5 0.333333│
>> │2│_0.666667 _1 _2 _ 2 1 0.666667│
>> └─┴──────────────────────────────────┘
>>
>> Now I can also get rid of the (>}.y), by putting a [, inside my outer
>> product verb. (This is wrong, by the way - can you see my mistake?)
>>
>> '%' 1 :'(,.(<":m),<":,.>{.y),.(<{.":A),:<}.[A=:([,(<m)`:6/)&>/y'
>> (i.3);i:3 ┌─┬──────────────────────────────────┐
>> │%│ 0 1 2 0 0 0 0│
>> ├─┼──────────────────────────────────┤
>> │0│ 0 0 0 0 0 0 0│
>> │1│_0.333333 _0.5 _1 _ 1 0.5 0.333333│
>> │2│_0.666667 _1 _2 _ 2 1 0.666667│
>> └─┴──────────────────────────────────┘
>>
>> Now let's get rid of the [ to the left of A=: since it is doing nothing
>> useful for us.
>>
>> '%' 1 :'(,.(<":m),<":,.>{.y),.(<{.":A),:<}.A=:([,(<m)`:6/)&>/y' (i.3);i:3
>> ┌─┬──────────────────────────────────┐
>> │%│ 0 1 2 0 0 0 0│
>> ├─┼──────────────────────────────────┤
>> │0│ 0 0 0 0 0 0 0│
>> │1│_0.333333 _0.5 _1 _ 1 0.5 0.333333│
>> │2│_0.666667 _1 _2 _ 2 1 0.666667│
>> └─┴──────────────────────────────────┘
>>
>> Now let's clean up the manipulations on the left side of A which build those
>> labels. I basically want the first row of A in a separate box from the rest
>> of A, right?
>>
>> '%' 1 :'(,.(<":m),<":,.>{.y),.({.,:&<}.)A=:([,(<m)`:6/)&>/y' (i.3);i:3
>> ┌─┬──────────────────────────────────┐
>> │%│0 1 2 0 0 0 0 │
>> ├─┼──────────────────────────────────┤
>> │0│ 0 0 0 0 0 0 0│
>> │1│_0.333333 _0.5 _1 _ 1 0.5 0.333333│
>> │2│_0.666667 _1 _2 _ 2 1 0.666667│
>> └─┴──────────────────────────────────┘
>>
>> Uh... right about here, I notice that I've messed things up. My top row is
>> just wrong. So let's abandon the above line of thought and just try making a
>> table that contains the top row and left column. I can't use '%' here but I
>> am just trying to untangle my thoughts, so I'll use a 0 for now until I have
>> figured out how to manipulate the rest of the data.
>>
>> '%' 1 :'(0,>{:y),([,(<m)`:6/)&>/y' (i.3);i:3
>> 0 _3 _2 _1 0 1 2 3
>> 0 1 2 0 0 0 0 0
>> 0 0 0 0 0 0 0 0
>> _0.333333 _0.5 _1 _ 1 0.5 0.333333 0
>> _0.666667 _1 _2 _ 2 1 0.666667 0
>>
>> Ok, that is wrong because I have no leftmost column and I have two label
>> rows on top. Right about here, I noticed that I should have been using ],
>> inside my outer product, instead of [, (I want the contents of the righthand
>> box not the lefthand box).
>>
>> '%' 1 :'(0,>{.y),(],(<m)`:6/)&>/y' (i.3);i:3
>> 0 0 1 2 0 0 0
>> _3 _2 _1 0 1 2 3
>> 0 0 0 0 0 0 0
>> _0.333333 _0.5 _1 _ 1 0.5 0.333333
>> _0.666667 _1 _2 _ 2 1 0.666667
>>
>> Here, I have reversed my two label columns. I think here I noticed that my
>> left column is going on top instead of on the left. Rather than reason about
>> that, I simplify my expression further and ignore the leftmost column for a
>> moment. (It's easier to just perform experiments and glance at them than it
>> is to think things through.
>> Probably not the smartest technique, but do not accuse me of being
>> smart and we will be ok.)
>>
>> '%' 1 :'(],(<m)`:6/)&>/y' (i.3);i:3
>> _3 _2 _1 0 1 2 3
>> 0 0 0 0 0 0 0
>> _0.333333 _0.5 _1 _ 1 0.5 0.333333
>> _0.666667 _1 _2 _ 2 1 0.666667
>>
>> Good. Here I have the table I want (without the boxes and without the left
>> column). So let's grab out the boxes:
>>
>> '%' 1 :'({.;}.)(],(<m)`:6/)&>/y' (i.3);i:3
>> ┌────────────────┬──────────────────────────────────┐
>> │_3 _2 _1 0 1 2 3│ 0 0 0 0 0 0 0│
>> │ │_0.333333 _0.5 _1 _ 1 0.5 0.333333│
>> │ │_0.666667 _1 _2 _ 2 1 0.666667│
>> └────────────────┴──────────────────────────────────┘
>>
>> Good enough? Not quite but I have not noticed that yet, so let's add the
>> left column.
>>
>> '%' 1 :'(m;,.>{.y),.({.;}.)(],(<m)`:6/)&>/y' (i.3);i:3
>> ┌─┬──────────────────────────────────┐
>> │%│_3 _2 _1 0 1 2 3 │
>> ├─┼──────────────────────────────────┤
>> │0│ 0 0 0 0 0 0 0│
>> │1│_0.333333 _0.5 _1 _ 1 0.5 0.333333│
>> │2│_0.666667 _1 _2 _ 2 1 0.666667│
>> └─┴──────────────────────────────────┘
>>
>> Oh, right, I need to format the top row or it will not retain spacing
>> when separated from the bottom row
>>
>> '%' 1 :'(m;,.>{.y),.({.;}.)":(],(<m)`:6/)&>/y' (i.3);i:3
>> ┌─┬──────────────────────────────────┐
>> │%│ _3 _2 _1 0 1 2 3│
>> ├─┼──────────────────────────────────┤
>> │0│ 0 0 0 0 0 0 0│
>> │1│_0.333333 _0.5 _1 _ 1 0.5 0.333333│
>> │2│_0.666667 _1 _2 _ 2 1 0.666667│
>> └─┴──────────────────────────────────┘
>>
>> Done.
>>
>> For this case I did not need to format the bottom right box, but in obscure
>> irrelevant cases that might be a good idea (like imagine the top row was 0
>> 0.5 1 1.5 2 and the left column was 0 2 4 and the value for m was '*').
>>
>> That said, I should probably have instead used
>> '%' 1 :'(m;,.>{.y),.({.;}.)":(''(],('',m,'')/)&>/'')128!:2 y'
>> (i.3);i:3
>>
>> Because it makes more sense to think of m as a string representing a verb
>> than it does to think of m as representing an unboxed gerund.
>>
>> Thanks,
>>
>> --
>> Raul
>>
>> On Fri, Nov 15, 2013 at 2:28 AM, Linda Alvord <[email protected]>
>> wrote:
>>> What definition of & is applied here?
>>>
>>> s=: 4 :'(],(<x)`:6/)&>/y'
>>> '%' s (i.3);i:3
>>> _3 _2 _1 0 1 2 3
>>> 0 0 0 0 0 0 0
>>> _0.333333 _0.5 _1 _ 1 0.5 0.333333
>>> _0.666667 _1 _2 _ 2 1 0.666667
>>>
>>> How does it work? I did find an explanation for `6/ but I can't find it
>>> again.
>>>
>>> Linda
>>>
>>>
>>>
>>> -----Original Message-----
>>> From: [email protected]
>>> [mailto:[email protected]] On Behalf Of Raul
>>> Miller
>>> Sent: Wednesday, November 13, 2013 7:38 AM
>>> To: Programming forum
>>> Subject: Re: [Jprogramming] Times Table Therapy
>>>
>>> Would
>>> '%' 1 :'(m;,.>{.y),.({.;}.)":(],(<m)`:6/)&>/y' (i.3);i:3 or
>>>
>>> '%' 4 :'(x;,.>{.y),.({.;}.)":(],(<x)`:6/)&>/y' (i.3);i:3
>>>
>>>
>>> be acceptable?
>>>
>>> The part to the right of the ": is essentially the same thing as your A.
>>>
>>> But note that I prefer to leave both the top and bottom boxes on the right
>>> formatted (where you only left the top box formatted).
>>>
>>> Thanks,
>>>
>>> --
>>> Raul
>>>
>>>
>>> On Wed, Nov 13, 2013 at 3:27 AM, Linda Alvord
>>> <[email protected]>wrote:
>>>
>>>> Thanks Raul. Here's the finished function. I would like not to
>>>> include A . Any ideas:
>>>>
>>>> a=:'%'
>>>> b=:i:3
>>>> c=:i.3
>>>> d=:c;b
>>>>
>>>> T=: 1
>>>> :'(,.(<":u),<":,.>{.y),.(<{.":A),:<}.[A=:(>}.y),".(":,>{.y),(u,,''/''),":,>}.y'
>>>> a T d
>>>> ┌─┬──────────────────────────────────┐
>>>> │%│ _3 _2 _1 0 1 2 3│
>>>> ├─┼──────────────────────────────────┤
>>>> │0│ 0 0 0 0 0 0 0│
>>>> │1│_0.333333 _0.5 _1 _ 1 0.5 0.333333│
>>>> │2│_0.666667 _1 _2 _ 2 1 0.666667│
>>>> └─┴──────────────────────────────────┘
>>>>
>>>> '>.' T (i:4);i:4
>>>> ┌──┬─────────────────────┐
>>>> │>.│_4 _3 _2 _1 0 1 2 3 4│
>>>> ├──┼─────────────────────┤
>>>> │_4│_4 _3 _2 _1 0 1 2 3 4│
>>>> │_3│_3 _3 _2 _1 0 1 2 3 4│
>>>> │_2│_2 _2 _2 _1 0 1 2 3 4│
>>>> │_1│_1 _1 _1 _1 0 1 2 3 4│
>>>> │ 0│ 0 0 0 0 0 1 2 3 4│
>>>> │ 1│ 1 1 1 1 1 1 2 3 4│
>>>> │ 2│ 2 2 2 2 2 2 2 3 4│
>>>> │ 3│ 3 3 3 3 3 3 3 3 4│
>>>> │ 4│ 4 4 4 4 4 4 4 4 4│
>>>> └──┴─────────────────────┘
>>>>
>>>>
>>>> Linda
>>>>
>>>> -----Original Message-----
>>>> From: [email protected] [mailto:pro
>>>> [email protected]] On Behalf Of Raul Miller
>>>> Sent: Saturday, November 09, 2013 8:45 AM
>>>> To: Programming forum
>>>> Subject: Re: [Jprogramming] Times Table Therapy
>>>>
>>>> First, g seemed a bit overly ornate, so I took the liberty of
>>>> putting it through a weight loss program:
>>>>
>>>> % 1 :'<}.":(>}.y),(>{.y)u/,>}.y' (i.3) ,&< i:3
>>>>
>>>> % 1 :'<}.":(>}.y),(>{.y)u/,>{:y' (i.3) ,&< i:3
>>>>
>>>> % 1 :'<}.":(>}.y),(>{.y)u/>{:y' (i.3) ,&< i:3
>>>>
>>>> % 1 :'<}.":(>}.y),u/&>/y' (i.3) ,&< i:3
>>>>
>>>> % 1 :'<}.":(],u/)&>/y' (i.3) ,&< i:3
>>>>
>>>>
>>>> (these all have the same result as a g d)
>>>>
>>>>
>>>> The phrase U&>/Y would apply the verb U between the contents of the
>>>> two boxes of Y (if Y is a pair of boxes). And, in this case, U
>>>> would be a verb with the result: "contents of the second box and a u
>>>> table".
>>>>
>>>>
>>>> I am more comfortable with the short form than the long form
>>>> because the short form leaves me with extra space on the line so I
>>>> can inspect the rest of the sentence.
>>>>
>>>>
>>>> Anyways, note that we can get the top row back by getting rid of
>>>> the behead, like this:
>>>>
>>>> % 1 :'<":(],u/)&>/y' (i.3) ,&< i:3
>>>>
>>>> ┌──────────────────────────────────┐
>>>>
>>>> │ _3 _2 _1 0 1 2 3│
>>>>
>>>> │ 0 0 0 0 0 0 0│
>>>>
>>>> │_0.333333 _0.5 _1 _ 1 0.5 0.333333│
>>>>
>>>> │_0.666667 _1 _2 _ 2 1 0.666667│
>>>>
>>>> └──────────────────────────────────┘
>>>>
>>>>
>>>> If you want the top row in a different box from the rest of the
>>>> rows, you can replace that leading < with ,.@({.;}.)
>>>>
>>>>
>>>> Does this help?
>>>>
>>>>
>>>> Thanks,
>>>>
>>>>
>>>> --
>>>>
>>>> Raul
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Sat, Nov 9, 2013 at 3:15 AM, Linda Alvord
>>>> <[email protected]
>>>> >wrote:
>>>>
>>>> > Thanks. I’m starting to understand things better. Here is my
>>>> > next problem.
>>>> >
>>>> > a=:%
>>>> > b=:i:3
>>>> > c=:i.3
>>>> > d=:(<c),<b
>>>> >
>>>> > ]M=:":(>}.d),(>{.d)a/,>}.d
>>>> > _3 _2 _1 0 1 2 3
>>>> > 0 0 0 0 0 0 0
>>>> > _0.333333 _0.5 _1 _ 1 0.5 0.333333
>>>> > _0.666667 _1 _2 _ 2 1 0.666667
>>>> > (<{.M),:<}.M
>>>> > ┌──────────────────────────────────┐
>>>> > │ _3 _2 _1 0 1 2 3│
>>>> > ├──────────────────────────────────┤
>>>> > │ 0 0 0 0 0 0 0│
>>>> > │_0.333333 _0.5 _1 _ 1 0.5 0.333333│
>>>> > │_0.666667 _1 _2 _ 2 1 0.666667│
>>>> > └──────────────────────────────────┘
>>>> >
>>>> > f=: 1 :'":(>}.y),(>{.y)u/,>}.y'
>>>> > a f d
>>>> > _3 _2 _1 0 1 2 3
>>>> > 0 0 0 0 0 0 0
>>>> > _0.333333 _0.5 _1 _ 1 0.5 0.333333
>>>> > _0.666667 _1 _2 _ 2 1 0.666667
>>>> >
>>>> > g=: 1 :'<}.":(>}.y),(>{.y)u/,>}.y'
>>>> > a g d
>>>> > ┌──────────────────────────────────┐
>>>> > │ 0 0 0 0 0 0 0│
>>>> > │_0.333333 _0.5 _1 _ 1 0.5 0.333333│
>>>> > │_0.666667 _1 _2 _ 2 1 0.666667│
>>>> > └──────────────────────────────────┘
>>>> >
>>>> > I want to modify g so that it attaches the top row with correct
>>>> > spacing as shown above.
>>>> >
>>>> > Linda
>>>> >
>>>> >
>>>> > -----Original Message-----
>>>> > From: [email protected] [mailto:
>>>> > [email protected]] On Behalf Of Raul
>>>> > Miller
>>>> > Sent: Friday, November 08, 2013 7:57 AM
>>>> > To: hProgramming forum
>>>> > Subject: Re: [Jprogramming] Times Table Therapy
>>>> >
>>>> > http://www.jsoftware.com/help/dictionary/cret.htm explains that return.
>>>> > exits an explicit definition.
>>>> >
>>>> > http://www.jsoftware.com/help/dictionary/d521.htm explains that
>>>> > the result of {. is the leading item of an array (which means one
>>>> > dimension less than the table).
>>>> >
>>>> > I'll presume that I do not need to document "behead" but just in
>>>> > case some of the younger readers are curious:
>>>> > http://www.jsoftware.com/help/dictionary/d531.htm
>>>> >
>>>> > Thanks,
>>>> >
>>>> > --
>>>> > Raul
>>>> >
>>>> >
>>>> >
>>>> > On Fri, Nov 8, 2013 at 3:26 AM, Linda Alvord
>>>> > <[email protected]
>>>> > >wrote:
>>>> >
>>>> > > What does return. Mean?
>>>> > >
>>>> > > Also:
>>>> > >
>>>> > > a=:*
>>>> > > b=:i:5
>>>> > > c=:i.3
>>>> > > d=:(<c),<b
>>>> > >
>>>> > > c */b
>>>> > > 0 0 0 0 0 0 0 0 0 0 0
>>>> > > _5 _4 _3 _2 _1 0 1 2 3 4 5
>>>> > > _10 _8 _6 _4 _2 0 2 4 6 8 10
>>>> > >
>>>> > > (>{.d)
>>>> > > 0 1 2
>>>> > > >}.d
>>>> > > _5 _4 _3 _2 _1 0 1 2 3 4 5
>>>> > >
>>>> > > (>{.d) */ >}.d
>>>> > > 0 0 0 0 0 0 0 0 0 0 0
>>>> > >
>>>> > > _5 _4 _3 _2 _1 0 1 2 3 4 5
>>>> > >
>>>> > > _10 _8 _6 _4 _2 0 2 4 6 8 10
>>>> > >
>>>> > > $ (>{.d) */ >}.d
>>>> > > 3 1 11
>>>> > >
>>>> > > So:
>>>> > >
>>>> > > (>{.d) */, >}.d
>>>> > > 0 0 0 0 0 0 0 0 0 0 0
>>>> > > _5 _4 _3 _2 _1 0 1 2 3 4 5
>>>> > > _10 _8 _6 _4 _2 0 2 4 6 8 10
>>>> > >
>>>> > > Why is ({.c) a list and (}.d) a table?
>>>> > >
>>>> > > Linda
>>>> > >
>>>> > >
>>>> > > -----Original Message---
>>>> > > From: [email protected] [mailto:
>>>> > > [email protected]] On Behalf Of Raul
>>>> > > Miller
>>>> > > Sent: Thursday, November 07, 2013 10:07 AM
>>>> > > To: Programming forum
>>>> > > Subje.ct: Re: [Jprogramming] Times Table Therapy
>>>> > >
>>>> > > We can replace
>>>> > > g=: 1 :',.(":u),":,.>{.y'
>>>> > > with
>>>> > > g=: 1 :',.(":5!:5<''u''),":,.>{.y'
>>>> > >
>>>> > > A problem is that u is a verb in your example, and you want a
>>>> > > noun representation of it.
>>>> > >
>>>> > > But this runs into a problem:
>>>> > >
>>>> > > g=: 1 :',.(":5!:5<''u''),":,.>{.y'
>>>> > > * g (<i.3),<i.5
>>>> > > |value error: y
>>>> > > | ,.(":5!:5<'u'),":,.>{. y
>>>> > >
>>>> > > We need an unquoted reference to u (or one of the other such
>>>> > > names), or x and y are interpreted to mean u and v.
>>>> > >
>>>> > > So:
>>>> > >
>>>> > > g=: 1 :',.(":5!:5<''u''),":,.>{.y return. u'
>>>> > > * g (<i.3),<i.5
>>>> > > *
>>>> > > 0
>>>> > > 1
>>>> > > 2
>>>> > >
>>>> > > Does this make sense?
>>>> > >
>>>> > > --
>>>> > > Raul
>>>> > >
>>>> > >
>>>> > >
>>>> > > On Wed, Nov 6, 2013 at 11:07 PM, Linda Alvord
>>>> > > <[email protected]
>>>> > > >wrote:
>>>> > >
>>>> > > > This the data I want to use:
>>>> > > >
>>>> > > > a=:*
>>>> > > > b=:i:5
>>>> > > > c=:i.3
>>>> > > > ]d=:(<c),<b
>>>> > > > ┌─────┬──────────────────────────┐
>>>> > > > │0 1 2│_5 _4 _3 _2 _1 0 1 2 3 4 5│
>>>> > > > └─────┴──────────────────────────┘
>>>> > > >
>>>> > > > This this is the correct result with the wrong data:
>>>> > > >
>>>> > > > a=:'*'
>>>> > > > f=: 1 :',.(":u),":,.>{.y'
>>>> > > > a f d
>>>> > > > *
>>>> > > > 0
>>>> > > > 1
>>>> > > > 2
>>>> > > >
>>>> > > > Here is the error I can’t fix:
>>>> > > > a=:*
>>>> > > > g=: 1 :',.(":u),":,.>{.y'
>>>> > > > a g d
>>>> > > > |domain error: a
>>>> > > > | ,. (":u),":,.>{.y
>>>> > > >
>>>> > > >
>>>> > > > Is there a way to make g work correctly?
>>>> > > >
>>>> > > > Linda
>>>> > > >
>>>> > > >
>>>> > > > -----Original Message-----
>>>> > > > From: [email protected] [mailto:
>>>> > > > [email protected]] On Behalf Of Roger
>>>> > > > Hui
>>>> > > > Sent: Sunday, November 03, 2013 7:02 PM
>>>> > > > To: Programming forum
>>>> > > > Subject: Re: [Jprogramming] Times Table Therapy
>>>> > > >
>>>> > > > > My first adverb! Linda
>>>> > > >
>>>> > > > Given the topic and the person, it seems appropriate to point
>>>> > > > out that
>>>> > > Ken
>>>> > > > Iverson credited Linda Alvord for getting over a pedagogic hurdle.
>>>> > > > From *Kenneth
>>>> > > > E. Iverson <http://www.jsoftware.com/papers/autobio.htm>*,
>>>> > > > 2008,
>>>> > section
>>>> > > > 5:
>>>> > > >
>>>> > > > There were also surprises in the writing. Although the great
>>>> > > > utility
>>>> > of
>>>> > > > matrices was recognized (as in a 3-by-2 to represent a
>>>> > > > triangle), there
>>>> > > was
>>>> > > > a great reluctance to use them because the concept was
>>>> > > > considered to be
>>>> > > too
>>>> > > > difficult.
>>>> > > >
>>>> > > > Linda Alvord said to introduce the matrix as an outer product
>>>> > > > — an idea that the rest of us thought outrageous, until Linda
>>>> > > > pointed out that
>>>> > the
>>>> > > > kids already knew the idea from familiar addition and
>>>> > > > multiplication
>>>> > > tables.
>>>> > > >
>>>> > > >
>>>> > > >
>>>> > > >
>>>> > > > On Sun, Nov 3, 2013 at 7:04 AM, Linda Alvord
>>>> > > > <[email protected]
>>>> > > > >wrote:
>>>> > > >
>>>> > > > >
>>>> > > > > My first adverb! Linda
>>>> > > > >
>>>> > > > -------------------------------------------------------------
>>>> > > > -
>>>> > > > -
>>>> > > > ---
>>>> > > > ---- For information about J forums see
>>>> > > > http://www.jsoftware.com/forums.htm
>>>> > > > -------------------------------------------------------------
>>>> > > > -
>>>> > > > -
>>>> > > > ---
>>>> > > > ---- For information about J forums see
>>>> > > > http://www.jsoftware.com/forums.htm
>>>> > > >
>>>> > > ---------------------------------------------------------------
>>>> > > -
>>>> > > -
>>>> > > ---
>>>> > > -- For information about J forums see
>>>> > > http://www.jsoftware.com/forums.htm
>>>> > >
>>>> > > ---------------------------------------------------------------
>>>> > > -
>>>> > > -
>>>> > > ---
>>>> > > -- For information about J forums see
>>>> > > http://www.jsoftware.com/forums.htm
>>>> > >
>>>> > -----------------------------------------------------------------
>>>> > -
>>>> > -
>>>> > --- For information about J forums see
>>>> > http://www.jsoftware.com/forums.htm
>>>> > -----------------------------------------------------------------
>>>> > -
>>>> > -
>>>> > --- For information about J forums see
>>>> > http://www.jsoftware.com/forums.htm
>>>> >
>>>> -------------------------------------------------------------------
>>>> -
>>>> -
>>>> - For information about J forums see
>>>> http://www.jsoftware.com/forums.htm
>>>> -------------------------------------------------------------------
>>>> -
>>>> -
>>>> - For information about J forums see
>>>> http://www.jsoftware.com/forums.htm
>>>>
>>> --------------------------------------------------------------------
>>> -
>>> - For information about J forums see
>>> http://www.jsoftware.com/forums.htm
>>>
>>> --------------------------------------------------------------------
>>> -
>>> - For information about J forums see
>>> http://www.jsoftware.com/forums.htm
>> ---------------------------------------------------------------------
>> - For information about J forums see
>> http://www.jsoftware.com/forums.htm
>> ---------------------------------------------------------------------
>> - For information about J forums see
>> http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm