> PLEASE DON'T TURN THIS THREAD INTO A POLITICAL FLAMEWAR. Huh? I thought I was having a quiet discussion until I see all the caps, and invocation of the Bible.
On Thu, Oct 20, 2011 at 8:36 PM, Henry Rich <[email protected]> wrote: > Well, that's what we're arguing about, isn't it? But even so, I think > you have it backwards. Unarguably, the name for what verbs operate on > is 'noun'. The question is, What is an array? So I think you should > have said, "'Array' means 'noun'". > > The Dictionary says any noun is an array. Does that settle the matter > for all time? > > The Bible says... > > ...but does that define for all time the meaning of 'marriage'? > > PLEASE DON'T TURN THIS THREAD INTO A POLITICAL FLAMEWAR. I'm only > making a point about the stability of meaning. If you find yourself > heating up, cool down by reading W v O Quine's "Two Dogmas of Empiricism". > > I propose a different meaning. > > Henry Rich > > On 10/20/2011 11:24 PM, Roger Hui wrote: >> You have to use a different word than "noun". It's already taken and >> it means "array". >> >> >> >> On Thu, Oct 20, 2011 at 7:54 PM, Henry Rich<[email protected]> wrote: >>> My quibble is simply with the definition. I think it's great that all >>> nouns follow the rules they do. I just wish I had a word that meant >>> 'non-atomic array' (in my classes, I use 'array' to mean that). I say >>> 'noun' to mean 'scalar or array'. >>> >>> I think the usual meaning of 'array' is an arrangement of things. A >>> scalar - an a-tom, that which cannot be divided - is not 'arranged', it >>> just is. It should be called a noun, not an array. The rules for >>> handling nouns are cleverly designed so that they move seamlessly from >>> arrays to atoms. >>> >>> And just now reading Roger's post, it seems to me to make my point: I >>> would say "a monadic function takes a noun as argument and returns a >>> noun result". I see an improvement in brevity and expressiveness. >>> >>> Henry Rich >>> >>> On 10/20/2011 10:34 PM, Marshall Lochbaum wrote: >>>> While that is an important property, your argument is a lot like saying >>>> that >>>> an empty list cannot be counted as a list because all other lists have a >>>> first element. Admittedly, scalars are very different from other arrays, >>>> but >>>> it's essential that we still be able to consider them as arrays because >>>> otherwise we are forced to concern ourselves with the number of dimensions >>>> in an array--for instance, scalar and vector addition become very different >>>> operations. >>>> >>>> One of the really cool properties of J is that it eliminates a lot of >>>> distinctions: I can write code that works for lists of numbers or lists of >>>> arrays, and I never care about the number of dimensions in an array. Adding >>>> a distinction like scalar/array back runs counter to this process. >>>> >>>> Marshall >>>> >>>> On Thu, Oct 20, 2011 at 10:09 PM, Viktor Cerovski<[email protected] >>>>> wrote: >>>> >>>>> >>>>> Not so long post with a proof that in J scalars are different from arrays. >>>>> >>>>> Björn Helgason wrote: >>>>>> >>>>>> You asked about "hermeneutical horizon" so I did decide on the religious >>>>>> aspect of the question. >>>>>> >>>>> I don't think we need just yet any of religious aspects here >>>>> since there is a nice mathematical explanation: >>>>> >>>>> There is a monoidal zero wrt Append (,) for any array >>>>> except when its shape is 0$0. >>>>> >>>>> It's that simple. Here is the proof: >>>>> >>>>> The following monadic verb: >>>>> mzero =: 0 $~ 0 , }.@$ >>>>> >>>>> returns monoidal zero for any array of nonempty shape. >>>>> This means that the following expression returns 1 for >>>>> any non 0$0 shaped noun x: >>>>> >>>>> ((, mzero) -: ])x >>>>> >>>>> or, in other words, >>>>> >>>>> x -: x, mzero x >>>>> >>>>> returns 1. For example (the following is a pasted J session): >>>>> >>>>> mzero =: 0$~0,}.@$ >>>>> ((, mzero) -: ]) 1$1 >>>>> 1 >>>>> ((, mzero) -: ]) 0$1 >>>>> 1 >>>>> ((, mzero) -: ]) 0 0 0 3 5$1 2 3 >>>>> 1 >>>>> ((, mzero) -: ]) i.7 5 4 >>>>> 1 >>>>> ((, mzero) -: ]) 123 >>>>> 0 >>>>> >>>>> In the case when x has shape 0$0, however, there is no >>>>> noun mz in J such that >>>>> >>>>> x -: x,mz >>>>> >>>>> returns 1. For example, eq.: >>>>> >>>>> 1 -: 1,mz >>>>> >>>>> has no solution in J. The same holds for the eq: >>>>> >>>>> 'a' -: 'a',mz1 >>>>> >>>>> In particular, the "obvious" solution for mz1 doesn't work: >>>>> >>>>> 'a' -: 'a' , '' >>>>> 0 >>>>> >>>>> Btw, monoid for which mzero gives the (right) zero is the set of all >>>>> J arrays whose *items* have the same shape, in which case >>>>> it is also the left zero, together with dyadic Append (,). That is >>>>> straightforward to prove since the only somewhat tricky part >>>>> was getting the zero. >>>>> >>>>> Scalars are then indeed mathematically different than arrays >>>>> in J, which justifies calling them numbers/chars rather than >>>>> arrays of numbers/chars. >>>>> >>>>> >>>>> >>>>>> 2011/10/20 Viktor Cerovski<[email protected]> >>>>>> >>>>>>> >>>>>>> It's a bit longer post, but it demonstrates that numbers are >>>>>>> not arrays in J. >>>>>>> >>>>>>> >>>>>>> Björn Helgason wrote: >>>>>>>> >>>>>>>> It depends on what it is >>>>>>>> 123 can be a number >>>>>>>> 123 can be text >>>>>>>> You can change it from text to number and other way around. >>>>>>>> >>>>>>>> So 123 can be or become what you want it to be. >>>>>>>> >>>>>>> I was talking about 123 as defined in J, where >>>>>>> 123-as-text would be written '123'. >>>>>>> >>>>>>> Henry points out that any number can be interpreted as an >>>>>>> array with an empty shape. Then, there is also an interpretation >>>>>>> that an array with an empty shape can be considered a scalar. >>>>>>> So, in this above case this scalar is 123, so why not call, interpret, >>>>>>> think of it as of a number? >>>>>>> >>>>>>> >>>>>>>> What you believe it to be may not be what it really is. >>>>>>>> You have to test it and make sure it is the shape and character you >>>>>>>> believe >>>>>>>> in or not. >>>>>>>> After you find out what 123 is you can decide on what you want to do. >>>>>>>> To take 123 on in blind faith can prove to be a mistake and can cause >>>>>>>> problems and failures. >>>>>>>> >>>>>>> If by this you mean whether I believe that the printed representation >>>>>>> 123 of some noun tells us what the rank of the noun is, then of course >>>>>>> I don't believe this. For instance, if J session looks like: >>>>>>> >>>>>>> f x >>>>>>> 123 >>>>>>> >>>>>>> then I don't know whether the resulting 123 has rank 0 or 1, >>>>>>> but that's just how J prints nouns, and we can test the result >>>>>>> further to sort this out, as you also suggest. >>>>>>> >>>>>>> So I did some testing on whether it can be distinguished in J between >>>>>>> 123-as-number or 123-as-an-array. Basically, the issue cannot >>>>>>> be resolved simply by a single test: imagine that we call >>>>>>> all rank zero nouns that are numbers just, well, numbers. >>>>>>> >>>>>>> Let's instead look how the two concepts of 123 fit into the language. >>>>>>> >>>>>>> It indeed looks like 123 is an array: it has (empty) shape, rank 0, >>>>>>> and it has one element: >>>>>>> >>>>>>> e=:0$0 NB. empty array >>>>>>> >>>>>>> e -: $123 >>>>>>> 1 >>>>>>> #123 >>>>>>> 1 >>>>>>> 0{123 >>>>>>> 123 >>>>>>> 1{123 >>>>>>> |index error >>>>>>> | 1 {123 >>>>>>> >>>>>>> We get the index error because there is no second element of >>>>>>> 123-as-array. So far so good. But how do we then explain >>>>>>> the following: >>>>>>> >>>>>>> }.123 >>>>>>> >>>>>>> e -: }.123 >>>>>>> 1 >>>>>>> >>>>>>> 123 -: 123,e >>>>>>> 0 >>>>>>> >>>>>>> The problem with this can be stated in English as: >>>>>>> In J, when we drop the leading element of 123 we get >>>>>>> empty array, but when we append empty array to 123 we >>>>>>> don't get 123. >>>>>>> >>>>>>> Let us just say: that is how things are defined, a bit strange >>>>>>> as they might be. But then again, when 123 is a one >>>>>>> element array, I get the desired property *of arrays*: >>>>>>> >>>>>>> (1$123) -: 123,e >>>>>>> 1 >>>>>>> (1$123) -: 123,e,e >>>>>>> 1 >>>>>>> (1$123) -: 123,e,e,e,e,e,e,e >>>>>>> 1 >>>>>>> (1$123) -: e,e,e,123,e,e,e,e >>>>>>> 1 >>>>>>> >>>>>>> (In English: appending/prepending an empty array to >>>>>>> an array does not change it.) >>>>>>> >>>>>>> So from this follows the conclusion that 123 is not an array, >>>>>>> while 1$123 is. >>>>>>> >>>>>>> It is not anymore the matter of interpretation of 123, >>>>>>> but the structural/language issue with J, namely >>>>>>> that numbers are not arrays, unless, that is, we drop the >>>>>>> requirement that appending empty array doesn't do >>>>>>> anything to an array. >>>>>>> >>>>>>> >>>>>>> 2011/10/20 Viktor Cerovski<[email protected]> >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Raul Miller-4 wrote: >>>>>>>>> >>>>>>>>> On Thu, Oct 20, 2011 at 9:43 AM, Viktor Cerovski >>>>>>>>> <[email protected]> wrote: >>>>>>>>>> Henry Rich wrote: >>>>>>>>>>> >>>>>>>>>>> Point of nomenclature: every noun has a shape. All shapes are >>>>>>> lists. >>>>>>>>>>> The shape of an atom is an empty list. >>>>>>>>>>> >>>>>>>>>>> (also, all nouns are arrays, ecch) >>>>>>>>>>> >>>>>>>>>> Statements like "all nouns are arrays" is hard to make precise >>>>>>>>>> due to the dynamic typing of J. >>>>>>>>> >>>>>>>>> An array is a region of computer memory whose interpretation (and, >>>>> if >>>>>>>>> we exclude things like sparse arrays, its size) is determined by its >>>>>>>>> shape and its type. >>>>>>>>> >>>>>>>>> A shape is a list of non-negative integers whose product is the >>>>>>> number >>>>>>>>> of elements in an array. >>>>>>>>> >>>>>>>>> To make this precise you have to enumerate those types... >>>>>>>>> >>>>>>>> Given all these conditions and definitions (a big given!), >>>>>>>> what is then hermeneutical horizon of 123 in J: >>>>>>>> >>>>>>>> Should I interpret it as a number, or an array, or both, >>>>>>>> or neither? >>>>>>>> -- >>>>>>>> View this message in context: >>>>>>>> >>>>>>> >>>>> http://old.nabble.com/%7B.-y-produces-an-array.-tp32687373s24193p32690306.html >>>>>>>> Sent from the J Programming mailing list archive at Nabble.com. >> ---------------------------------------------------------------------- >> 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
