Thank /you/ for /your/ comments.
I'll look through the repos, thanks for the link.
Could one say J's intention is the following? Be a great array
processing language, and since utility functions for arrays are
naturally binary or ternary at worst therefore the built-in verbs
provide a great basis for array hacking while the programmer can focus
on higher level tasks by defining higher arity functions explicitly.
I still think J puts unnecessary hurdles in the way of defining higher
arity functions. In the link you sent me I see
pdfcircle=: 3 : 0
'v e c p'=. y
p=. citemize p
where I presume citemize is a utility function for extracting lists from
some container. Suppose p had rank 2 or higher, would citemize have to
be called again? Where can I look up citemize anyway? I have no idea
how to find it from the NuVoc page.
If the arguments to a function are to be a scalar x, a list y, and a
rank 2 table z, each has to be boxed before passing them to function,
right? Coming from languages like Mathematica and Clojure that support
destructuring, this is a turn-off, but I can see that once you get used
to it it's not that big a deal.
On 11/19/2017 02:45 PM, chris burke wrote:
This issue of tacit vs explicit comes up from time to time, and I'll repeat
an earlier comment that tacit is over-emphasized in the J forums. In
production systems, most programs are explicit, while tacit is used where
appropriate, rather than used because of a desire to look cool.
Essentially, J gives you the choice and programmers just pick what suits
the problem.
Browse through the J repos to see this. For example, in the recent addon
script,
http://jsoftware.com/websvn/wsvn/public/trunk/graphics/pdfdraw/source/base/draw.ijs
, all definitions are explicit. Note that the first takes a right argument
with 4 values, so "arity" hardly matters.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm