One thing I find fascinating with J is that it forces you to put the operations in logical order. At least that's how I feel. If I have three pieces of information to do something with I think a little more, do something with two pieces, then use the result to include another piece. When I first catenated the two variables, then used From to take what should be taken from each, then I felt that it was J logic. Doing something simultaneously with three pieces of information is against this logic? The main problem with Amend is we are reluctant to leave traditional thinking and go with the J logic? That's why we have all these problems with getting three pieces of information into the same operation? /Erling

On 2014-07-09 01:05, Erling Hellenäs wrote:
In most languages indexed replacement is indexed replacement? In J and in most functional languages it is not? You get a brand new variable? So, why give the user the flawed impression he can still do indexed replacement and do amendments to variables/nouns? And at the same time in tacit code we pretend to only have functions? No variables/nouns to be amended? Just functional transformations?
/Erling

On 2014-07-09 00:21, Jose Mario Quintana wrote:
Erling wrote: "It's obviously not possible to do any amendments in tacit
code?" Adding after wards: "A principle of functional programming is you
never modify a variable?"



From my perspective those (rhetorical?) questions are separate. Regarding the first question, consider the verb (v) that produces the squares of an
amendment produced by the verb amend.  For example,



    ( v=. *: @: amend f. )

*:@:(_: 0&({::)@]`(1&({::)@])`(2&({::)@])} ])



    v (0 1 2 ; 2 3 5 ; 7#9)

81 81 0 1 81 4 81



The verb (v) is tacitly defined (is it not?) and amendment is performed via
} (is it not?); thus the answer to the first question is that it is
possible.  Furthermore, the conclusion is reached regardless of what the
meanings of “functional programming” and “variable” might, or might not,
be.  (Am I missing something?).


On Mon, Jul 7, 2014 at 6:45 PM, Erling Hellenäs <[email protected]>
wrote:

Yes, what I said is it seems like a misnomer. Functional J has variables, but they are handled by the interpreter? Still they are never changed? This could create a performance problem if you do a lot of small changes to big data structures? It is essential to handle this efficiently? Still J does
not have lazy execution? The functional transformations Amend does are
immediately executed? Maybe J sometimes only creates new pointers to old
static data structures? /Erling


On 2014-07-08 00:21, Jose Mario Quintana wrote:

What variable? Tacit programming does not refer to any arguments
explicitly; or, are you saying that “amend” is a misnomer (if so, that is
not my domain)?


On Mon, Jul 7, 2014 at 6:07 PM, Erling Hellenäs <[email protected]
wrote:

A principle of functional programming is you never modify a variable?
What
Amend does is create a new variable from other existing variables?
Nothing
is amended? /Erling


On 2014-07-07 23:50, Jose Mario Quintana wrote:

  Erling wrote:
"
It's obviously not possible to do any amendments in tacit code? It is
also
less elegant to pass these three parameters in the two arguments in
tacit
code?
"

Well, Raul and I showed general verbs to perform amendments tacitly.
  Once
I was as puzzled as you are (were?) but I found enlightenment; maybe you
can find it as well:
http://www.jsoftware.com/pipermail/general/2000-September/004192.html




On Mon, Jul 7, 2014 at 1:53 PM, Erling Hellenäs <
[email protected]
wrote:

It's obviously not possible to do any amendments in tacit code? It is

also
less elegant to pass these three parameters in the two arguments in
tacit
code? Any opinions about the use of From to do the same thing?


NB. x and y are arrays of the same rank
NB. q is a boolean, also of this rank
NB. The expression merges x and y.
NB. Where q is TRUE it picks from y, otherwise x
NB. q {"0 1 x,"0 y

If q is a vector and if we actually have a variable z of rank
(+/q),}.$y
we can easily create x from q#^:_1 [ z ? No use for any indexes?

/Erling


------------------------------------------------------------
----------

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

Reply via email to