d=:%&2 d %&2 d 13 6.5 d d 13 3.25 d d d 13 1.625 3 d 13 1.625 ,.(i.25) d 13 13 6.5 3.25 1.625 0.8125 0.40625 0.203125 0.101563 0.0507813 0.0253906 0.0126953 0.00634766 0.00317383 0.00158691 0.000793457 0.000396729 0.000198364 9.91821e_5 4.95911e_5 2.47955e_5 1.23978e_5 6.19888e_6 3.09944e_6 1.54972e_6 7.7486e_7 d %&2 NB. x u&n y ↔ u&n^:x y
That part is good. How can you get from there to the power rule? NB. x u^:n y ↔ x&u^:n y Linda -----Original Message----- From: programming-boun...@forums.jsoftware.com [mailto:programming- boun...@forums.jsoftware.com] On Behalf Of Dan Bron Sent: Saturday, May 04, 2013 10:14 AM To: programm...@jsoftware.com Subject: Re: [Jprogramming] Transcomputational numbers TL;DR: Simply deleting words will never work. Removing an offending word without compensating for its function will break code. To remove an offending word, one must compensate by using other words which express the same meaning. Linda wrote: > I feel quite confident about removing @: carefully. > Viewmat had 5 uses of @: > I simplifies the sentence to a simpler version. > viewmat @: ([ load @:('viewmat'"_)) @: ((Josephus2 % <:@])"0/~) @: >: @:i. 32 > viewmat ([ [: load 'viewmat'"_) ((Josephus2 % [:<: ])"0/~) >: i. 32 Let us put aside stylistic questions, and allow that disliking conjunctions is as valid as any other preference. In pursuit of that preference, what I want to focus on is what it means to remove @: (or anything else) /carefully/. In particular, I want to highlight that _all words have a meaning_. And that when people put a word in a sentence, they do it for a reason. Use of conjunctions is not random, nor arbitrary, nor are conjunctions used just for decoration. Everywhere they're used, they have a function and a purpose. And if you want to remove them, that's ok, but you must do so with consideration for that purpose. In particular, /simply deleting words will not work/. If you remove a conjunction, you must make some alteration, some substitution, which reproduces its function. Let's take some examples from your reformulation of the viewmat verb. You took <:@], deleted the @, and _reproduced its function_ using [: . That's fine. And again, you took load @:('viewmat'"_), removed the @:, and _reproduced its function_ using [: . Great! But then you took >:@:i., deleted the @:, and ... did nothing. And again with ((Josephus2 ...)"0/~)@>: you deleted the @ but did not compensate for the deletion. And again with viewmat@:... you deleted the @: but did nothing to reproduce its function. Where does that leave us? Well, similar to the earlier comparison between ^.&1e93 and ^.1e93, you've taken a re-usable verb and created a one-time noun. Check out what happens if we try to re-use your version: original =: viewmat @: ([ load @:('viewmat'"_)) @: ((Josephus2 % <:@])"0/~) @: >: @:i. linda =: viewmat ([ [: load 'viewmat'"_) ((Josephus2 % [:<: ])"0/~) >: i. original 32 NB. Colorful chart original 16 NB. Colorful chart linda 32 NB. Blank linda 16 NB. Blank So, in deleting the conjunctions, without compensating for their intended purpose, you haven't "simplified" the code - you've broken it. Let's approach this from a different angle. In deleting the three @s where you didn't reproduce their functionality with a [:, you were saying those three @s were simply unnecessary. You were asserting that these words served no purpose, and should be deleted as superfluous. In effect, you were saying that when Pepe put them there, he didn't know what he was doing! Do you really feel confident in that kind of assertion? Or how about this: when you deleted those @s, you replaced them with a space. Which means you thought space (juxtaposition) could perform the same function as @ . And when you deleted & earlier in this thread, you though space could carry its function, too. And similarly for &. and @: and ` etc. In effect, you were saying these words are unnecessary, that space (juxtaposition) can do for them all, and when Ken introduced them into the language, /he/ didn't know what he was doing. Now, I don't believe that you're thinking "Pepe was wrong, Ken was wrong" when you're making these transformations. I'm just highlighting that that kind of arrogance is an implication of deleting words without compensating alterations, as a kind of reductio ad absurdium. What I'm trying to instill in you is the tenet that /simply deleting words will never work/. And worse than "not work", deleting words will /break code/. The words we use, we use for a reason. We're trying to convey meaning. Removing words from expressions - whether English or J - changes the meaning! If you don't like certain types of words, that's fine - everyone has his own style. But when you come across a word you don't like, rather than simply "let's get rid of that!", I want you your first reaction to be "ok, I want to remove that word; how can I express it differently?". Or "how can I /replace/ this word I don't like with /other words that mean the same thing/?", or, in a more formal, J sense: "if I delete a conjunction, how can I reproduce its functionality?". The hitch with that is, the only way to make such changes with confidence is to learn what the words @ @: & &: &. &.: ` etc _really mean_. You can't express them a different way if you're not sure what they mean in the first place. -Dan PS: A good exercise for you might be to make another attempt at creating a verb equivalent to Pepe's original viewmat function, but without using @ . The operative word there is /equivalent/. It must produce the same results under all conditions, not just a test case or two. You're actually pretty close already, and if you just consistently follow your original pattern of removing @s and compensating with [:s, you'll get there. ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm