Linda wrote:
> words3=: 13 : ';:'' ''(([: I. tolower = toupper) y)}tolower y'
Please note:
words3=: 13 : ';:'' ''(([: I. tolower = toupper) y)}tolower y’
words3
3 : ';:'' ''(([: I. tolower = toupper) y)}tolower y'
That is, 13 : is incapable of converting the verb, as you have expressed it, to
tacit form. Therefore the 13 : itself is superfluous, and it would be more
direct and straightforward to simply define words3 using 3 : (not 13 : ) in the
first place:
words3E =: 3 : ';:'' ''(([: I. tolower = toupper) y)}tolower y’
-:/ 5!:1 ;: 'words3 words3E’ NB. Identical representations
1
And, since we’re simply and directly defining an explicit verb, we might as
well take advantage of all the other features explicit definitions offer us:
words3Elp =: verb define
lowerY =. tolower y
nonLettersIdx =. I. (toupper y) = lowerY
;: ' ' nonLettersIdx } lowerY
)
Clear, readable, and only a single calculation of tolower y . Of course, it
has none of the advantages of Raul’s original formulation, but that loss
happened when you “eliminate[d] At, Atop, Gerund and Rank”.
So, since that's a sunk cost, we might as well run with it, and get as much
back for it as we can. Hope that’s what’s you meant when you said “maybe you
can simplify it”.
-Dan
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm