Thank you, that was insight I had hoped for.
Your solution fits many circumstances. Perhaps, in general,
f=: u&:(['description')"u
Hence the conjunctionDescribe
Dyad=: :[:
Monad=:[: :
Describe=: 2 : 'u&:([n"_)"u'
add=: +Describe'addition' : Dyad
3 <@add i.5
┌─┬─┬─┬─┬─┐
│3│4│5│6│7│
└─┴─┴─┴─┴─┘
3 <@:add i.5
┌─────────┐
│3 4 5 6 7│
└─────────┘
add
(+&:([ 'addition'"_)"0 0 0 :)Dyad
mp =: +/ .*~~ Describe 'vector length squared : dot product'
mp
+/ .*~~&:([ 'vector length squared : dot product'"_)"_ _ _
mp 3 4
25
3 4 ; (i. 2 5) ; 3 4 mp i.2 5
┌───┬─────────┬──────────────┐
│3 4│0 1 2 3 4│20 27 34 41 48│
│ │5 6 7 8 9│ │
└───┴─────────┴──────────────┘
Date: Wed, 28 Feb 2018 23:12:49 GMT
From:[email protected]
To:[email protected]
Subject: Re: [Jprogramming] self documentation
Message-ID:<[email protected]>
David Lambert:
Dyad=: [: :
add=: +&:([ 'x add y yields the sum x + y'"_) Dyad
Unlike +, the "add" has ranks _ _ which will be noticable with enough
context:
1 <@add i. 4
+-------+
|1 2 3 4|
+-------+
1 <@+ i. 4
+-+-+-+-+
|1|2|3|4|
+-+-+-+-+
Given that that you are ditching the monadic case anyway here,
it's simpler (and rank-preserving) to use u:v here:
add =. 'x add y yields the sum x + y'"_ : +
or, with your Dyad-style protection against misuse:
add =. [:&'x add y yields the sum x + y' : +
Martin
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm