> The scope of J seems to be very constrained to mathematics. > It would be nice to use J as a system programming language! > Are there any examples of people doing these things?
What are the requirements of a system programming language these days? In the old days (and my age is showing :-), it means assembler and/or machine language manipulations. The following are a few examples of using J. - Sudoku <http://www.jsoftware.com/jwiki/Essays/Sudoku> - N Queens Problem<http://www.jsoftware.com/jwiki/Essays/N%20Queens%20Problem> - Queens and Knights<http://www.jsoftware.com/jwiki/Essays/Queens%20and%20Knights> - Knight's Tour <http://www.jsoftware.com/jwiki/Essays/Knight%27s%20Tour> - Set Game <http://www.jsoftware.com/jwiki/Essays/Set%20Game> - The Monty Hall Problem<http://www.jsoftware.com/jwiki/Essays/The%20Monty%20Hall%20Problem> Whether or not you consider these to be constrained by mathematics, it would be interesting to compare a solution in another language to the J solution. On Sat, Feb 15, 2014 at 9:04 AM, Lee Fallat <ircsurfe...@gmail.com> wrote: > Thanks for the explanation Raul. > > I think I understand now that string manipulation in J is > non-trivial...I was following right up until the very last J sentence > ( 'hi',:&.(-&(a.i.'*'))&.(a.&i.)'there'), mostly because I still only > know a few verbs. I am starting to think J is either not for me, or my > way of thinking really needs to change for this language. There are so > many things that would seem straight forward in traditional languages > than J, but I will have to see! > > Some examples of what I'm thinking of would be difficult or different in J: > Passing 3 or more parameters to a verb > Turning a vector into a list of arguments > ...loops? From what I've seen loops are built into some verbs (+/ -/ > etc), but what if you wanted to do say: add every number in the > vector, but for every number add 2.91, then divide that by 0.4? > In python: > range() generates a list of numbers from 0 to 9. > for x in range(0,10) > y += (x + 2.91) / 0.4 > One other thing is interacting with the operating system...How do I > check to see if files, or even directories exist? Can you create > directories, or change permissions of files with J? The scope of J > seems to be very constrained to mathematics. It would be nice to use J > as a system programming language! Are there any examples of people > doing these things? > > Anyways, I apologize for being off-topic, but just some things I've > been thinking about. Like I said I still have to get through some more > learning material. > > Regards, > > Lee > > > > On Sat, Feb 15, 2014 at 11:37 AM, Raul Miller <rauldmil...@gmail.com> > wrote: > > Conceptually speaking, J has three "atomic data types": > > > > Numeric > > Literal > > Boxed > > > > Numeric types support arithmetic: 1+1 > > Literal types are what might be called character types in other > languages. > > (ascii or unicode) > > Boxed types are what might be called reference types in other languages. > > > > J tries to treat numeric types as mathematical arithmetic entities. It's > > not perfect, and involves tradeoffs but it does a pretty good job at > being > > useful and educational while still offering decent performance with a > > relatively compact implementation. Also, J booleans are numeric and I > > vastly prefer this approach (which fits my understanding of the history > of > > booleans) over the convention of enshrining arbitrary implementation > > limitations. > > > > You cannot perform arithmetic directly on literals but you can, for > > example, compare an ascii 'A' with a unicode 'A' and get a literally > > correct answer. (However, unicode also includes an open ended set of > rules > > and extensions and if you want those you will probably need to implement > > them yourself. To avoid open-ended arguments about these issues its > perhaps > > better to refer to this type of data as 'literal' rather than > 'character'.) > > > > Boxes take an arbitrary array and "puts it in a box" - you get a single > > thing which can be treated something like a literal or a number. > > > > You cannot mix these three types in the same array, but if you put > > something in a box you can put the box in an array of boxes. > > > > Anyways... > > > > For some contexts you might use a list of characters (excuse me: I mean > > literals) to represent a string. For other contexts you might want to put > > that list of characters in a box. If you arrange your strings as a two > > dimensional array they will all be padded (with spaces) to match the > length > > of the longest one. > > > > Actually, in some contexts you might want to use a list of numbers to > > represent a string. Sometimes arithmetic is handy. > > > > Put differently, J does not actually have a "string" data type. But you > can > > represent them using arrays. > > > > Examples: > > > > 'hello' > > hello > > 'hello';'there' > > ┌─────┬─────┐ > > │hello│there│ > > └─────┴─────┘ > > 'hi',:'there' > > hi > > there > > 'hi',:&.(-&(a.i.'*'))&.(a.&i.)'there' > > hi*** > > there > > > > In that last example, I made the padding character by '*' rather than ' > '. > > I did this by combining the two strings as numbers rather than literals. > > The padding value for numbers is zero. But if I had stopped there I > would > > have gotten ascii nulls for my padding. So I also combined them under > > subtracting by the numeric value for '*'. > > > > Under performs the reverse transform for the result (of the transform > that > > it performed from the arguments), > > http://www.jsoftware.com/jwiki/Essays/Under > > > > I hope this makes sense. > > > > Thanks, > > > > -- > > Raul > > > > On Sat, Feb 15, 2014 at 10:31 AM, Lee Fallat <ircsurfe...@gmail.com> > wrote: > > > >> Thank you all for your kind replies! And to those saying how I should > >> really use awk for this job- I know, I was just curious! I am very > >> impressed by the variance in answers, and how different J really is > >> compared to other languages. > >> > >> Thanks again, > >> > >> Lee > >> > >> P.S. As for the input, just numbers was fine. I'm curious though what > >> J does when it encounters strings (and numbers!). I figured reading > >> through the books offered on the wiki will explain this. (+/ "hello" > >> "world" 100 = what? :) > >> > >> On Sat, Feb 15, 2014 at 10:20 AM, Jim Russell <jimsruss...@yahoo.com> > >> wrote: > >> > I love AWK; it (and perl) have saved my bacon many times. If your > >> problem involves processing fields within lines of an I/O stream in a > *nix > >> environment, of course you or I should use AWK. Particularly me, since > I'd > >> never be given a processing task involving more math than a "gozinta" or > >> takeaway, much less anything involving polynomials, natural logs, verb > >> inverses, factorials, ranks above 3, and a whole bunch of stuff that J > >> would do for me if only I understood what it was. > >> > > >> > (I would also pick AWK if I had only 5 minutes to learn a new > language.) > >> > > >> > But had AWK never been invented (shudder), and I needed to write it, > >> would I use J? Well, not me, but I know some folks here that might > knock it > >> out using J in an afternoon or two. > >> > > >> >> On Feb 14, 2014, at 9:51 PM, Lee Fallat <ircsurfe...@gmail.com> > wrote: > >> >> > >> >> Hey there, > >> >> > >> >> As new user to J (but several years experience with C and Java), I > >> >> find it very, very interesting. The power of its one liners and > >> >> mathematical heritage really have me hooked. I was wondering though > >> >> if it has similar capabilities as awk. What's the equivalent to this > >> >> awk script in J?: > >> >> > >> >> BEGIN { FS=";" } > >> >> { print $1+$2 } > >> >> > >> >> This script sets a FieldSeparator to ;, and then for every "row", add > >> >> the first and second column and prints it. I would like to replace > awk > >> >> with J! > >> >> > >> >> Thank you, > >> >> > >> >> Lee > >> >> > >> >> P.S. Excuse me if I've misidentified J sentences. (Sentences -> > >> statements?) > >> >> > ---------------------------------------------------------------------- > >> >> 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