Raul wrote:
> Meanwhile, note that tacit programming can have exactly the
> same ugliness
> 13 : '%: +/ *: y' 3 4
I differ; the above is not tacit programming. True, the verb which is
eventually applied to 3 4 is tacit, but that tacit verb is
nowhere evident in the line above (and so cannot be blamed for any "ugliness").
I've been puzzled before by people who use 13 : to produce tacit verbs, but
never inspect the output of that adverb. They even
persist the 13 : ... line in their scripts! To what purpose?
Often, I see people using 13 : in the name of "tacit programming". This is
seems as silly to me as writing en2fr 'Please
translate me to French!' in the name of "French programming". To be fair,
I've never used 13 : , but it seems to me its main
purpose would be pedagogical. That is, an explicit Jer could use it in the IJX
window to translate explicit code to tacit, in order
to learn how to do that for himself, one day.
But unless one expects the 13 : tacit translation to improve performance, I
see no reason to persist it in a script (and if I
expected it to improve performance, I would test that expectation*, unless I
was taking Pepe's advice and waiting for the
implementation to catch up .... ).
-Dan
* Tacit code can be faster than explicit for several reasons, but a major one
is some tacit constructs are supported by special
code (i.e. DoJ Appendix B). But it seems to me 13 : takes no pains to
produce such constructs. For example:
13 : 'y i. >./ y'
] i. >./
rand =: ?~ 3e6
(-: |.)@:(ways`:0) rand NB. Identical results
1
'5.2d' 8!:2 (%"1 <./) (6!:2, 7!:2@:])&> ways ,L:0 ' rand' NB.
Non-identical performance
5.06 1.07
5.09 1.07
1.00 1.00
-Dan
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm