The verb [: rejects all arguments with a domain error. It has an
exceptional role as the left tine of a fork. You CAN use forks to get
what you want:
d=:0 0.5 1 1.5
NB. compare
[: o. j. d
|domain error
| [:o.j.d
([: o. j.) d
0 0j1.5708 0j3.14159 0j4.71239
NB. These work
^ ([: o. j.) d
1 6.12323e_17j1 _1j1.22465e_16 _1.83697e_16j_1
([: ^ o.) j. d
1 6.12323e_17j1 _1j1.22465e_16 _1.83697e_16j_1
Henry would say with some justification CAN is not SHOULD.
Kip
On 12/6/2011 5:37 AM, Linda Alvord wrote:
> This is not an example where rank is not appropriate. Rank does matter. It
> is interesting as a problem and I need to think about it as a mathematical
> problem. From a programming point of view here's the issue:
> ^@o.@j. 0 0.5 1 1.5
> 1 0j1 _1 0j_1
> d=:0 0.5 1 1.5
> j.d
> 0 0j0.5 0j1 0j1.5
> o.j.d
> 0 0j1.5708 0j3.14159 0j4.71239
> ^[:o.j.d
> ^[:o.j.d
> |domain error
> | ^ [:o.j.d
> ^@o.j.d
> 1 6.12323e_17j1 _1j1.22465e_16 _1.83697e_16j_1
> ^@:o.j.d
> 1 6.12323e_17j1 _1j1.22465e_16 _1.83697e_16j_1
>
> If you adopt my rule, then @: is really needed here and @ could be
> eliminated.
>
> I haven't looked at the other two examples yet.
>
> Linda
>
>
> 2011/12/6 Linda Alvord<[email protected]>
>
>> Can you make a simple example that looks like this u@v@w ? Please use
>> actual verbs so that it is a tight little nugget that might come about in
> a
>> fairly simple mathematical situation. Use it in a situation that does not
>> require rank. Next, write it in explicit form without @
>>
>> Here's what I would like. Remember foo ?
>>
>> foo=: 13 :'an expression with x's and y's and three verbs like # , %: ,
>> ? or * '
>>
>>
>> Also:
>>
>> Let us use [: u v or u@:v as we like, and specify a rank when we
>> need one.
>>
>> I think I could live with:
>>
>> Let us use [: u v unless rank is involved. Only use u@:v if rank is
>> needed, thus @ vanishes from the planet.
>>
>>
>> Linda
>>
>>
>> -----Original Message-----
>> From: [email protected]
>> [mailto:[email protected]] On Behalf Of Henry Rich
>> Sent: Monday, December 05, 2011 10:08 PM
>> To: Programming forum
>> Subject: Re: [Jprogramming] Turkey Roll - Challenge 2
>>
>> If you are OK with @: , then we agree. @ is hard for beginners.
>>
>>
>> u@v is equivalent to u@:v"v or ([: u v)"v
>>
>> u@v@w is u@:v"v@:w"w or ([: ([: u v)"v w)"w
>>
>> Henry Rich
>>
>> On 12/5/2011 9:57 PM, Linda Alvord wrote:
>>> Can you make a simple example that looks like this u@v@w . Is it
>> possible
>>> to write an explicit version that will create a tacit expression to do
>> the
>>> same thing?
>>>
>>> I don't have a problem with @: . My concern is only with @
>>>
>>> Linda
>>>
>>> -----Original Message-----
>>> From: [email protected]
>>> [mailto:[email protected]] On Behalf Of Henry Rich
>>> Sent: Monday, December 05, 2011 9:28 PM
>>> To: Programming forum
>>> Subject: Re: [Jprogramming] Turkey Roll - Challenge 2
>>>
>>> I don't understand why u@v is anything other than 'right to left'. It
>>> means do v, then do u. u@v@w means w, then v, then u.
>>>
>>> The complication of @ is not its ordering, it's its rank. In my classes
>>> I teach @: as a primitive. We don't use [:, or @ .
>>>
>>> Henry Rich
>>>
>>> On 12/5/2011 9:15 PM, Linda Alvord wrote:
>>>>
>>>> Compare your expression for dice :
>>>>
>>>> faces=: {&' o'@((i.3 3)e.&":"1])&.>4 80 840 8620 86420 865320
>>>> faces
>>>> ------T-----T-----T-----T-----T-----┐
>>>> │ │o │o │o o│o o│o o│
>>>> │ o │ │ o │ │ o │o o│
>>>> │ │ o│ o│o o│o o│o o│
>>>> L-----+-----+-----+-----+-----+------
>>>>
>>>> With Kip Murray's version:
>>>>
>>>> one =: ' ',' o ',:' '
>>>> two =: 'o ',' ',:' o'
>>>> three =: 'o ',' o ',:' o'
>>>> four =: 'o o',' ',:'o o'
>>>> five =: 'o o',' o ',:'o o'
>>>> six =: 'o o','o o',:'o o'
>>>> ]dice =: one;two;three;four;five;six
>>>> ----T---T---T---T---T---┐
>>>> │ │o │o │o o│o o│o o│
>>>> │ o │ │ o │ │ o │o o│
>>>> │ │ o│ o│o o│o o│o o│
>>>> L---+---+---+---+---+----
>>>>
>>>> Your dice are great looking! However that change has greatly increased
>> the
>>>> complexity of the code. Also, there is a condition of the challenge to
>>>> exclude @ in each expression. This requirement encourages considering
>>> the
>>>> execution from the right toward the left. In your example 4 80 840
>> 8620
>>>> 86420 865320 could be puzzling to a beginner. Your other ideas are
>>>> thoughtful ideas to incorporate in an actual design of a program. At
>> this
>>>> stage, I'm trying to raise issues that can be discussed and explored
>>>> further.
>>>>
>>>> From your design so far, is it possible for you to capture the actual
>>> values
>>>> of the and display them following each toss ? It is this data that
>>> will
>>>> be useful as you finish the challenge.
>>>>
>>>> Linda
>>>>
>>>>
>>>> -----Original Message-----
>>>> From: [email protected]
>>>> [mailto:[email protected]] On Behalf Of Raul Miller
>>>> Sent: Monday, December 05, 2011 9:50 AM
>>>> To: Programming forum
>>>> Subject: Re: [Jprogramming] Turkey Roll - Challenge 2
>>>>
>>>> Personally, I have been baffled by a number of the choices and
>>> requirements
>>>> here. And, by this, I mean that I do not understand them.
>>>>
>>>> That said, here is my current interpretation of a mix of some of the
>>>> statements expressed here, about what is being accomplished:
>>>>
>>>> faces=: {&' o'@((i.3 3)e.&":"1])&.>4 80 840 8620 86420 865320
>>>> toss=: (] {~ (?@$ #)) ".bind 'faces'
>>>>
>>>> Example use, with ascii box drawing enabled:
>>>>
>>>> toss 2 10
>>>> +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
>>>> |o |o |o o|o |o |o |o |o o|o o|o o|
>>>> | o | o | o | o | o | | | | o |o o|
>>>> | o| o|o o| o| o| o| o|o o|o o|o o|
>>>> +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
>>>> |o |o o|o |o o|o o|o |o |o |o o|o |
>>>> | o | o | | o | | | | | | |
>>>> | o|o o| o|o o|o o| o| o| o|o o| o|
>>>> +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
>>>> toss 2 10
>>>> +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
>>>> |o |o |o o|o |o o|o |o o|o o|o o|o |
>>>> | | | | o |o o| o | | o |o o| |
>>>> | o| o|o o| o|o o| o|o o|o o|o o| o|
>>>> +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
>>>> |o o|o |o o|o o|o o|o o| |o o|o o|o o|
>>>> | | | o | | | o | o | | | |
>>>> |o o| o|o o|o o|o o|o o| |o o|o o|o o|
>>>> +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
>>>>
>>>> Notes:
>>>>
>>>> 1. I spaced my pips out wider, horizontally, than the original. I
> think
>>>> this looks better.
>>>> 2. toss has 'faces' as an implicit dependency
>>>> 3. I can change the number of dice being tossed by changing the
> argument
>>> to
>>>> toss
>>>>
>>>> In my opinion, this is not a very good design. In "real life" code, I
>>>> would either replace (". bind 'faces') with (faces) or I would make it
>> an
>>>> argument to the function.
>>>>
>>>> I could probably compress a few characters out of the definition of
>> faces,
>>>> but it would become more mysterious if I did so.
>>>>
>>> ----------------------------------------------------------------------
>>> 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